JPH06161932A - 入力/出力制御装置および方法 - Google Patents

入力/出力制御装置および方法

Info

Publication number
JPH06161932A
JPH06161932A JP5167394A JP16739493A JPH06161932A JP H06161932 A JPH06161932 A JP H06161932A JP 5167394 A JP5167394 A JP 5167394A JP 16739493 A JP16739493 A JP 16739493A JP H06161932 A JPH06161932 A JP H06161932A
Authority
JP
Japan
Prior art keywords
mdb
signal
giza
channel
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP5167394A
Other languages
English (en)
Other versions
JP3280759B2 (ja
Inventor
Carl Ellison
カール・エリソン
Randy Sybel
ランディー・シベル
William D Snapper
ウィリアム・ディー・スナッパー
Jonathan West
ジョナサン・ウェスト
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.)
Ascend Communications Inc
Original Assignee
Stratus Computer Inc
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 Stratus Computer Inc filed Critical Stratus Computer Inc
Publication of JPH06161932A publication Critical patent/JPH06161932A/ja
Application granted granted Critical
Publication of JP3280759B2 publication Critical patent/JP3280759B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)
  • Selective Calling Equipment (AREA)
  • Jib Cranes (AREA)

Abstract

(57)【要約】 【目的】 ディジタルデータ処理装置、特にディジタル
データ処理機能ユニット間において情報を転送するため
の装置および方法を提供する。 【構成】 ディジタルデータ処理装置は、二つの機能ユ
ニットおよびコントローラを備えており、それらの間で
情報が転送される。各機能ユニットは、ランダムアクセ
スメインメモリのような関連するメモリ要素を有してい
る。第1の機能ユニットは、データが転送送出されるべ
き関連するメモリ内の1または複数のアドレスを特定す
るメッセージ記述子ブロック(MDB)送信信号を発生
する送信要素(センダ)を備える。コントローラは、選
択されたMDB受信信号に整合するMDB送信信号を識
別し、整合しているMDB信号により特定される第1お
よび第2機能ユニットの対応するメモリ位置間に置いて
データの転送を実行する信号を発生する。本発明による
と、ディジタルデータ処理機能ユニット間における情報
の転送効率が向上される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ディジタルデータ処理
に関し、特定すると、ディジタルデータ処理機能ユニッ
ト間にいて情報を転送するための方法および装置に関す
る。本発明は、例えば、ホストメインフレームコンピュ
ータと周辺デバイスとの間の情報転送に応用可能性を有
する。
【0002】
【従来技術】ホストデバイスから周辺デバイスにデータ
を転送するための入力/出力コントローラは周知であ
る。本発明の譲受人に譲渡された米国特許第4,926,315
号は、入力/出力コントローラがデュアルバス構造体を
介して周辺デバイスと接続されるコンピュータシステム
を例示している。コントローラは、二重ストローブ信号
をバスに供給し、それによりユニット間におけるデータ
(および制御)信号の転送のタイミングを定める。各周
辺デバイスは、タイミング信号を監視し、バス上に受信
される情報の処理を開始させる。
【0003】米国特許第4,939,643 号に従うと、入力/
出力コントローラは、バス構造体を介してサイクル開始
信号を伝送することによって、周辺デバイス間における
データ転送サイクルを開始させる。同時に、入力/出力
コントローラは周辺デバイスアドレス信号を転送する。
伝送中フォルト(障害)が起こると、周辺デバイスはWA
IT(待ち)信号を発生し、そしてこの信号は、バス上に
おけるコントローラによる後続の転送を遅延させる。
【0004】目下出願中の一緒に譲渡された米国特許出
願第743,992 号は、直接メモリアクセス(DMA)およ
びプロセッサ命令(PID)両モードで周辺デバイスで
情報を転送する入力/出力コントローラを開示してい
る。コントローラは、DMA 転送中一緒に働くDMA 回路お
よびPIO 回路を有しており、局部的プロセッサの介入な
しでデータと命令の伝送をインターリーブ、すなわち交
互配置させる。
【0005】
【発明の課題】上述の特許および特許出願に記述される
コントローラは非常に有効であることが分かったが、例
えば入力/出力コントローラで使用できるさらに良いデ
ータ転送装置の必要性はなお存在する。
【0006】したがって、本発明の目的は、ディジタル
データ処理機能ユニット間において情報を転送するため
の改良された方法および装置を提供することである。
【0007】本発明の特定の目的は、付随するソフトウ
ェアおよびハードウェア機構の複雑性を最小化しなが
ら、周辺装置のような機能ユニットへのデータの迅速な
転送を容易にする改良された入力/出力制御装置および
方法を提供することである。
【0008】本発明の他の特定の目的は、タイミングエ
ラーに対する不感知性が改善された機能ユニット間デー
タ転送機構を提供することである。本発明の他の目的
は、以下の説明から明らかとなろう。
【0009】
【課題を解決するための手段】これらおよびその他の目
的は、本発明の一側面においては、二つの機能ユニット
(例えばホスト処理部と周辺デバイス)を有するディジ
タルデータ処理装置と両者間において情報を転送するた
めのコントローラを提供することにより達成される。第
1機能ユニットは、メッセージ送信記述子(ディスクリ
プタ)ブロック(「MDB」)送信信号を発生し、これ
によりデータが送出転送されるべき関連する局部メモリ
内の1または複数のアドレスを特定する。第2機能ユニ
ットは、データが転送されるべきその関連する局部メモ
リ内の1または複数の位置を特定するMDB信号を発生
する。
【0010】コントローラは、MDB送信および受信信
号、特に同じ論理または仮想チャンネルを特定するもの
を整合させる。一度整合が見いだされると、コントロー
ラは、第1および第2機能ユニットのそれぞれのメモリ
間においてデータを転送する。
【0011】上述のコントローラは、ホストおよび周辺
プロセッサ間において、それらのそれぞれの「メモリス
ペース」のデータに直接的にアクセスすることによって
データを転送する。かくして、本発明の1側面に従がう
と、ホストプロセッサおよび周辺デバイスは、そうでな
い場合は相互に隔絶されている。すなわち、ホストプロ
セッサおよび周辺装置は、いずれもが他のメモリを直接
読んだり書き込んだりできないように構成される。当技
術に精通したものであれば、そのように構成されたシス
テムは、違法なデータアクセスと関連する障害を受けに
くいことを理解できよう。
【0012】本発明の他の側面に従うと、送信要素(セ
ンダ)および受信要素(レシーバ)は、通信が行われる
べきチャンネルを特定する仮想チャンネル番号を含め
て、それらのそれぞれのMDB信号を発生する。
【0013】一度仮想チャンネルが設定されると、コン
トローラの仮想チャンネル回路は、受信中、類似の仮想
チャンネル番号を有するMDB送信または受信信号より
それぞれ成る各非整合のMDB送信または受信信号を記
憶する。本発明の一側面に従うと、仮想チャンネル番号
は、連結リストヘッド配列に対するインデックスであ
る。かかる各リストは、そのチャンネルに対する非整合
MDBのFIFOとして作用する。連結リストヘッドは、連
結リストヘッドの第1および最後の要素へのポインタを
含む構造体であり、ブロックを最小の努力で終端に取り
つけかつ前部から除去することができるようになされて
いる。
【0014】上述の仮想チャンネル機能を有するコント
ローラは、コントローラを各機能ユニットに接続するの
に単一の物理的通信路(またはバス)しか存在しないに
拘わらず、複数のそれぞれの仮想チャンネルを介して複
数の通信トランザクションを処理することができる。
【0015】関連する側面として、上述のコントローラ
は、機能ユニット間に仮想チャンネルを創成し、破壊
し、維持するための仮想チャンネル管理装置を備え得
る。詳述すると、各機能ユニットは、他の機能ユニット
と通信のための新しい仮想チャンネルの創成を要求する
MDB 信号を発生し得る。仮想チャンネル管理装置は、そ
の要求に応答して、かかるチャンネルを開き、チャンネ
ル番号を割り当て、要求中の機能ユニットに、割り当て
られた番号について報知し得る。その仮想チャンネル管
理装置は、それ自体、仮想チャンネルを介して要求中の
機能ユニットと接続され得る。
【0016】本発明に従うシステムは、さらに、第1お
よび第2機能ユニット間において特定の形式の情報を転
送するための予定されたドライバ制御仮想チャンネルを
含む。そのチャンネルは、例えば、第2機能ユニット
に、特定の通信トランザクションが行われるべき新しい
仮想チャンネルについて信号するために、第1の機能ユ
ニットにより使用できる。
【0017】他の関連する側面として、本発明に従うシ
ステムは、コントローラと機能ユニット間に診断および
エラーメッセージを転送するための予定された保守およ
び診断チャンネル、ならびにユニット間でデバッグ信号
を転送するための予定されたデバッガチャンネルを組み
込むことができる。
【0018】本発明の他の側面によると、上述の形式の
ディジタルデータプロセッサであって、コントローラ
が、一度要求された情報転送が完了すると、MDB を信号
中の機能ユニットに戻すための要素を備えるディジタル
データプロセッサが提供される。さらに詳しく言うと、
戻されたMDBは、MDBを発した機能ユニット内のFI
FOバッファに戻される。
【0019】本発明の他の側面においては、機能ユニッ
トの送信および受信ユニットは、それらのそれぞれのM
DBの復帰の際実行されるべき動作を特定し得る。かく
して、例えば、第1機能ユニットの送信要素は、そのMD
B で、対応する転送の完了の際、例えば転送に関係しそ
のコードのみに関係するかかるMDB データに取り付けら
れ得るあるコードが実行されるべきことを特定し得る。
【0020】
【実施例の説明】以下図面を参照して本発明を好ましい
実施例について説明する。図1は、本発明の好ましい実
施例に従って構成された障害許容周辺入力/出力システ
ムをもつディジタルデータ処理システム5’を示してい
る。このシステム5’は、通信のためにシステムバス2
2’を介して接続された組になった中央処理装置10’
及び12’と、組になったランダムアクセスメモリユニ
ット14’及び16’と、組になった入力/出力コント
ローラ18’及び20’とを含んでいる。
【0021】フラッシュバス19’を介して結合される
入力/出力コントローラ18’及び20’は、システム
バス22’により表されるシステムバックプレーンと一
つあるいはそれ以上の周辺デバイス24’、26’及び
28’との間での情報及び制御信号の転送を制御する。
これらの周辺デバイスは、永久記憶媒体(例えば、ディ
スク及びテープドライブ)と、通信コントローラと、ネ
ットワークインタフェースと、その他とを含むことがで
きる。
【0022】周辺デバイスの制御及び情報信号の転送
は、デュアル入力/出力バス30A’及び30B’を含
む周辺バス30’を介して生じる。これらのバスを介し
て転送される信号は、ゲートアレイ32’、34’、3
6’、38’、40’、42’とアダプタ44’、4
6’、48’とを介して周辺デバイス24’、26’、
28’へ転送(route) される。
【0023】図示されるように、各周辺デバイス(例え
ば、装置24’)は、ゲートアレイのペア(例えば、ア
レイ32’及び34’)と、アダプタ(例えば、アダプ
タ44’)とに結合される。対になったゲートアレイ
(例えば、アレイ32’及び34’)は、(図のよう
に)通信線路によって相互接続される。
【0024】さらに、各ゲートアレイは、線路56
A’、56B’、58A’、58B’、60A’、60
B’で示されるアダプタバスによってその関連するアダ
プタと接続される。続いて、アダプタ44’、46’、
48’は、局部的周辺線路を介して各関連する周辺デバ
イス24’、26’、28’と結合される。
【0025】周辺バス30’、特に第一及び第二の入力
/出力バス30A’、30B’は、ターミネータ6
2’、64’によって終端される。
【0026】好ましい実施例によれば、入力/出力バス
30A’及び30B’は、冗長信号キャリアとして働
く。すなわち、バス30A’及び30B’は、全く同様
の情報信号を同期的かつ同時に転送する。この配線が、
転送障害の検出を容易にして、障害のないバスを介して
連続で割り込みのない処理と通信とを可能にする。
【0027】好ましい実施例によれば、各バス30A’
及び30B’は、データ信号用と、制御信号用と、パリ
ティ信号用と、ストローブ信号用と、「待ち」信号用と
の導線を含んでいる。物理的に、バス30’は、各々の
ケーブルがより合わされた30対の二本のケーブルを使
って実行できる。この実行が、一方のケーブルを使用し
て転送4MHzでの冗長8ビット転送、あるいは別に両
方のケーブルを使用して4MHzでの冗長16ビット転
送を可能にする。バス30’に沿う情報の転送は、25
0ナノ秒のサイクル速度で生じて、4メガバイト/秒の
8ビット転送と、8メガバイト/秒の16ビット転送と
を提供する。
【0028】各入力/出力線路30A’及び30B’の
データ信号用と、制御信号用と、パリティ信号用と、待
ち信号用との線路は、オープンコレクタ導線であり、例
えばモトローラ社製の26S10トランシーバによって
駆動される。二本のストローブ線路が、各バス30A’
及び30B’に備わっている。これら対の線路は、入力
/出力コントローラ18’、20’において駆動され、
ターミネータ62’、64’で受け取られる異なる信号
キャリアとして働く。
【0029】単一の板上に備えつけできるゲートアレイ
のペアは、アダプタのシャーシ(図示なし)のスロット
内に挿入される。各スロットは、関連する周辺デバイス
のアドレスを定義するslot−idと関連づけられる。一つ
の実施例において、シャーシは、最端のターミネータ6
2’、64’が最後の二つのスロットを占めて、16個
のこのアドレス指定可能なスロットを維持する。
【0030】ディジタルデータプロセッサ5’をもっと
完全に理解することは、本願の譲受人に譲渡された次の
特許及び特許出願を参照することで達成できる。これら
の技術は、参照によって本願に組み込まれている。Wolf
f 他の「COMPUTER PERIFERAL CONTROL APPARATUS」と題
する米国特許第4,486,826 号;「FAULT-TOLERANT COMPU
TER SYSTEM HAVING EXPANDABLE PROCESSOR」と題するWi
lliamsの米国特許第4,816,990 号;「DIGITAL DATA PRO
PCESSING APPARATUS WITH PIPELINED MEMORY CYCLES 」
と題するReidの米国特許第4,866,604 号;「FAULT-TOLE
RANT DIGITAL TIMING APPARATUS AND METHOD」と題する
Batyの米国特許第4,920,540 号;「METHOD AND APPARAT
US FOR DETECTING SELECTED ABSENCE OF DIGITAL LOGIC
SYNCHRONISM」と題するWilliamsの米国特許第5,020,024
号;「COMPUTER PERIFERAL CONTROL APPARATUS」と題
するWolff 他の米国特許第4,486,826 号;「DIGITAL DA
TA PROCESSOR WITH FAULT TOLERANT PERIPHERAL BUS CO
MMUNICATION 」と題するLong他の米国特許第4,926,315
号;「CENTRAL PROCESSING APPARATUS」と題するReidの
米国特許第4,453,215 号;「DIGITAL DATA PROCESSOR W
ITH HIGH RELIABILITY」と題するSamson他の米国特許第
4,654,857 号;「DIGITAL DATA PROCESSOR WITH FAULT
TOLERANT BUS PROTOCOL 」と題するGardner 他の米国特
許第4,750,177 号;「METHOD AND APPARATUS FOR MONIT
ORING PERIPHERAL DEVICE COMMUNICATION」と題するBat
y他の米国特許第4,931,922 号;「FAULT TOLERANT DIGI
TAL DATA PROCESSOR WITH IMPROVED BUS PROTOCOL」と
題するLongの米国特許第4,939,643 号;「FAULT TOLERA
NT DIGITAL DATA PROCESSOR WITH IMPROVED INPUTB/OU
TPUT CONTROLLER 」と題するLongの米国特許第4,974,15
0 号;「FAULT TOLERANT DIGITAL DATA PROCESSOR WITH
IMPROVED PERIPHERAL DEVICE INTERFACE 」と題するLo
ngの米国特許第4,974,144 号;「EMI CABINET WITH IMP
ROVED INTERFACE SUPRESSION」と題するVowlesの米国特
許第5,049,701 号;1992年5月8日に出願された米
国特許第07/884,257 号(Attorney Docket No.SCM-050
CN)のために放棄された「OPTIMIZED INTERCONNECT NET
WORKS 」と題して1989年5月19日に出願されたBa
ty他の米国特許出願第354,139 号;「FAULT-TOLERANT U
NIX-TYPE DIGITAL DATA PROCESSING METHOD AND APPARA
TUS 」と題して1991年2月21日に出願されたYama
da他の米国特許出願第659,597 号;「HIERARCHICAL MEM
ORY MANAGEMENT APPARATUS AND METHOD 」と題して19
91年5月2日に出願されたStonerの米国特許出願第69
4,556 号;「FAULT TOLERANT PROCESSING SECTION WITH
DYNAMICALLY RECONFIGURABLE VOTING」と題して199
1年5月6日に出願されたCheungの米国特許出願第696,
129 号;「DIGITAL DATA PROCESSOR WITH MAINTENANCE
AND DIAGNOSTIC SYSTEM 」と題して1991年6月28
日に出願されたBullisの米国特許出願第723,065 号;
「FAULT-TOLERANT UNIX-TYPE DIGITAL DATA PROCESSING
METHOD AND APPARATUS 」と題して1991年7月1日
に出願されたYamada他の米国特許出願第723,803 号;
「I/O CONTROLLER APPARATUS AND METHOD FOR TRANSFER
RING DATA BETWEEN AHOST PROCESSOR AND MULTIPLE I/O
UNITS 」と題して1991年8月12日に出願されたL
ambの米国特許出願第743,992 号;「PROGRAMMABLE INTE
RRUPT PRIORITY ENCODER METHOD AND APPARATUS」と題
して1991年8月12日に出願されたLambの米国特許
出願第743,691 号;「FAULT TOLERANT PROCESSING SECT
ION WITH DYNAMICALLY RECONFIGURABLE VOTING」と題し
て1992年5月13日に出願されたCheungの米国特許
出願第07/882,474号(Attorney Docket No. SCM-082CN
【0031】データ転送システム 図2は、図1に示すディジタルデータ処理装置5’と結
合して使用する本発明によるデータ転送5としての好ま
しいシステムを示す。この図示したシステム5は、装置
の機能ユニット間のデータ転送を容易にする。さらに詳
しく言うと、このシステム5は、システムバックプレー
ン(図1のシステムバス22’)と(図1の)周辺デバ
イス24’、26’、28’との間で情報及び制御信号
を転送する。データ転送システム5は、また他の機能ユ
ニット(例えば、中央処理装置)間の通信を容易にする
のに使用できるということは理解されよう。
【0032】本発明の技術に基づいて、図示したデータ
転送システム5は、特殊な目的のハードウエアと、一般
あるいは特殊な目的のプロセッサでの実施のためのソフ
トウエアとに実行できる。以下に開示する実施例は、本
願で開示する図1のディジタルデータプロセッサ5’と
結合して動作するためのソフトウエアにおいて実行され
る。
【0033】図示したデータ転送システム5は、例え
ば、図1の入力/出力コントローラ18’、20’に対
応する入力/出力コントローラ10と、図1の中央処理
装置10’、12’に対応するホストデバイス40と、
図1の周辺デバイス28’とこれに関連づけられたイン
タフェース回路要素(例えば、ゲートアレイ40’、4
2’及びアダプタ48’)とに対応する周辺デバイス5
0と、として指示される複数の構成要素を含んでいる。
【0034】上記の対応する構成要素の動作をよりよく
理解することは、Wolff 他の「COMPUTER PERIFERAL CON
TROL APPARATUS」と題する米国特許第4,486,826 号と、
「I/O CONTROLLER APPARATUS AND METHOD FOR TRANSFER
RING DATA BETWEEN A HOST PROCESSOR AND MULTIPLE I/
O UNITS (Attorney Docket SCM-070) 」と題するLambの
米国特許出願第743,992 号と、「PROGRAMMABLE INTERRU
PT PRIORITY ENCODERMETHOD AND APPARATUS (Attorney
Docket SCM-073)」と題するLambの米国特許出願第743,6
91 号とを参照することによって達成される。
【0035】図2を参照すると、図示されたホストデバ
イス40は、コマンドFIFO15と、メッセージ送信
機41と、メッセージ受信機42と、メモリ43と、リ
ターンFIFO44と、コールバックユニット45とを
含んでいる。図示された入力/出力コントローラ10
は、仮想チャンネル要素25と、データ転送要素30
と、リターン要素35とを含んでいる。周辺デバイス5
0は、コマンドFIFO20と、メッセージ送信機49
と、メッセージ受信機51と、メモリ53と、リターン
FIFO54と、コールバックユニット55とを含んで
いる。
【0036】ホストプロセッサ40は、バスを介して入
力/出力コントローラ10と結合されている。これは、
従来の設計でもよいが、Wolff 他の「COMPUTER PERIFER
AL CONTROL APPARATUS」と題する米国特許第4,486,826
号のバックプレーンバスに関連して開示された設計及び
構成が好ましい。同様に、周辺デバイス50(及び関連
インタフェース回路要素)も従来のバスを介して入力/
出力制御装置10と接続できる。この相互接続は、この
同一特許において開示された型の周辺デバイスバスを介
して行われるのが好ましい。
【0037】インタフェース80及び90各々は、入力
/出力コントローラと機能ユニットとの間の通信を扱う
ための三つの経路、(i)MDBを入力/出力コントロ
ーラへ通信するための経路と、(ii)(入力/出力コ
ントローラが機能ユニット内のメモリから入力/出力コ
ントローラによって提供されるアドレスを読み出しかつ
書き込みする)読み出し/書き込みメモリバス経路と、
(iii)完了したMDBを機能ユニットへ戻す通信を
行うための経路とを含んでいる。各経路は、他の経路と
独立して動作する。図示した実施例において、機能ユニ
ットがホストの場合、インタフェースはシステムバス
(22’)を使用し、機能ユニットが周辺デバイスの場
合、インタフェースはPQバス(30’、32’、3
4’、44’)を使用する。
【0038】図示した実施例において、ホストデバイス
40内のプロセッサ92は、このインタフェースのプロ
セスのためとこのデバイスの図示した構成要素のための
独立プロセッサとして働く。同様に、入出力コントロー
ラ10及び周辺デバイス50(あるいは、関連インタフ
ェース回路)それぞれの局部のプロセッサ93及び94
は、これらインタフェースのプロセスとこれらユニット
の各構成要素とを駆動する。
【0039】プロセッサ92、93及び94は、従来の
汎用型の処理装置にできるけれども、図示したプロセッ
サ92は、Wolff 他の米国特許第4,486,826 号と、本発
明の譲受人に譲渡された他の上記の特許及び特許出願と
に開示された型の中央処理装置が好ましい。
【0040】プロセッサ93及び94は、Wolff 他の
「COMPUTER PERIFERAL CONTROL APPARATUS」と題する米
国特許第4,486,826 号と、「I/O CONTROLLER APPARATUS
AND METHOD FOR TRANSFERRING DATA BETWEEN A HOST P
ROCESSOR AND MULTIPLE I/O UNITS (Attorney Docket S
CM-070) 」と題するLambの米国特許出願第743,992 号
と、「PROGRAMMABLE INTERRUPT PRIORITY ENCODER METH
OD AND APPARATUS (Attorney Docket SCM-073)」と題す
るLambの米国特許出願第743,691 号とに、入力/出力コ
ントローラと周辺デバイスのアダプタとのそれぞれの構
成要素として開示された型のマイクロプロセッサが好ま
しい。
【0041】プロセッサ92、93及び94は、「対等
物対等物(ピア−トゥ−ピア)」関係をもつ。このよう
に、主従関係とは対称的に、いずれのプロセッサも、入
力/出力コントローラの初期化中でなければ別(のプロ
セッサ)の動作を直接制御しない。同様に、各プロセッ
サ92、93及び94は、他のプロセッサの速度と独立
した速度で動作する。
【0042】図示したデータ転送システム5は、何れか
二つの機能ユニット間で情報を転送する。これらは、例
えばホストプロセッサ40か、周辺デバイス50か、あ
るいは追加的な論理機能ユニット、例えば入力/出力コ
ントローラ10内の「接続管理装置」かでよい。これら
の転送は、インタフェース80及び90でのメッセージ
の交換を介して行なわれる。これらの転送は、入力/出
力コントローラ10によって割り当てられる「仮想チャ
ンネル」を介して起こる。交換されるメッセージは、メ
ッセージ記述子ブロック(MDB)によって記述され
る。
【0043】図示した実施例において、記述子ブロック
を指すポインタはMDB信号を表すのに使用される。M
DBが、MDBを発生するデバイス内のメモリのセグメ
ント内あるいはバッファ内に備わっていることは理解さ
れるだろう。かくして、ホストプロセッサ40によって
発生されるMDBは、例えばメモリ43内の領域を指
す。同様に、周辺デバイス50によって発生されるMD
Bは、例えばメモリ53の領域あるいはデバイス50に
対して局部のバッファを指す。各機能ユニット40及び
50は、それ自身のMDBを初期化して割り当てる。
【0044】局部記憶装置においてデータの転送される
べき転送先あるいは転送もとの指示に加えて、MDBは
さらにデータ転送と関連づけられた情報を含んでいる。
例えば、以下で説明するように、MDBは、転送が完了
したとき実行されるべきソフトウエアのルーチン−−
「コールバックルーチン」−−を指示する。使用者の自
由で、これもまた、大きなデータの構造体内に埋め込む
ことができ、続いて、そのコールバックルーチンに関係
のあるデータを含んでいるが、データ転送機構に関係の
ないデータは含んでいない。
【0045】動 作 動作における概観として、ホストデバイス40は、MD
B42Sを発生してコマンドFIFO15へ転送する。
黒塗りの円と矢による記号で表されるMDB42Sは、
メモリ43から転送されるべきデータの記述(すなわ
ち、アドレスと長さ)と、MDBが送られるべき仮想チ
ャンネル番号と、転送が完了したときに呼び出されるべ
き「コールバック」ルーチンのアドレスとを含んでい
る。
【0046】周辺デバイス50は、同様に、バッファを
同定するMDB42Rを発生してコマンドFIFO20
へ転送してホストデバイス40からの入力データを受信
する。MDB42Rは、白塗り円と矢による記号で表さ
れる。MDB42Rは、また仮想チャンネルと、転送が
完了したときに実行されるべきコールバック手順とを同
定する。
【0047】メッセージ送信機41及び49とメッセー
ジ受信機42及び51とコマンドFIFO15及び20
とは、ソフトウエアにおいて実行されるのが好ましい。
コマンドFIFO15及び20は、好ましくはメモリの
一部であるが、ハードウエアのFIFOであってもよ
い。
【0048】遠隔手順コールを実施するために、対の送
信及び受信MDBは、同時に(あるいは「アトミック態
様(atomically)」)コマンドFIFOに置かれなけれ
ばならない。コマンドFIFOにMDBを位置付けるラ
イブラリルーチンは、アトミック態様で位置付けられる
べきMDBのリストを受け入れるだろう。
【0049】図示した実施例において、コマンドFIF
Oは、オーバフローに対する連結リストに対して円形に
インデックスされる配列として実施される。オーバフロ
ーの事象において、「オーバフローブレット(overflow
bullet) 」と呼ばれる特殊なMDBは、配列内に待機さ
せられる。この特殊なMDBは、「違法」チャンネル番
号をもつ。配列が仮想チャンネル要素によって空にされ
ていた場合、オーバフローブレットは拒絶される。オー
バフローブレットは「拒絶した(rejected)」とマーク
されて戻り、そのコールバックはオーバフローリストを
無理にコマンドFIFOに提示させられる。したがっ
て、MDBをコマンドFIFOに提示するライブラリル
ーチンはコマンドFIFO内に十分な記憶スペースがな
いためにブロック化しない。
【0050】デバイス40及び50は、これらの各MD
BをコマンドFIFO15及び20上に配置して、そし
て入力/出力コントローラ10がコマンドFIFO15
及び20から各MDBを取り出してこれらを仮想チャン
ネル要素25へ転送する。そこから、これらは同一チャ
ンネル上で整合するMDBを待って待機させられるかあ
るいは待機していたMDBと整合されて一対としてデー
タ転送要素30へ与えられる。
【0051】MDBの42S及び42Rは、仮想チャン
ネル要素25へ転送され、そして仮想チャンネル要素2
5は、類似の仮想チャンネル番号をもつ送信及び受信M
DBを整合させる。一度、二つの同様に指示されたMD
Bが受信されると、仮想チャンネル要素25はデータ転
送要素へ信号を送ってデータ転送を開始する。詳述する
と、仮想チャンネル要素25は、データ転送要素30に
信号を送ってデータを送信DMA内で指示されるアドレ
ス範囲から受信DMA内で指示されるアドレス範囲へ転
送する。
【0052】データ転送要素は、従来の直接メモリアク
セス(DMA)の転送デバイスにすることができ、好ま
しくは、「I/O CONTROLLER APPARATUS AND METHOD FOR
TRANSFERRING DATA BETWEEN A HOST PROCESSOR AND MUL
TIPLE I/O UNITS (AttorneyDocket SCM-070) 」と題す
るLambの米国特許出願第743,992 号に開示されている型
のDMAデバイスである。
【0053】データ転送が完了すると、MDB42S及
び42Rは、それらの各機能ユニットへ戻される。詳述
すると、MDB42Sは入力/出力コントローラ10に
よってリターンFIFO44へ転送され、他方MDB4
2RはリターンFIFO54へ転送される。
【0054】さらに詳しく言うと、一度データ転送が完
了すると、リターン要素35は整合したMDB42Rお
よび42Sをマークしてデータ転送の状態を反射する。
MDBは、対応する入力/出力コントローラのインタフ
ェース80及び90を介してホストデバイス40及び周
辺デバイス50の両方へ戻される。
【0055】ホストデバイス40と周辺デバイス50の
両方の上に配置されるリターンFIFO要素44、54
は、これらが入力/出力コントローラ10から戻される
ようにMDBを受信する。リターンFIFO要素は、好
ましくは複数のリターンFIFOから構成される。これ
に関連して、FIFOは、その後現実にはリングをソフ
トウエアで実行する。リターンFIFOは、好ましくは
割り込みリングか、ポーリングされたリングか、カスタ
ムのポーリングされたリングかのいずれかを含んでい
る。
【0056】システムがリターンFIFO(44)の一
つをサービスする(「FIFOをドレインする」とも呼
ばれる)場合、MDBはそのFIFOから取り除かれ
て、後のコールバック処理のために待機させられるか、
あるいは通常の場合には、コールバック要素(45)が
直ちに呼ばれる。このコールバックルーチンは、追加的
な入力/出力を自由に提示するか、あるいはデータ構造
体を自由に処理するか、あるいはMDBをフリー記憶装
置へ単に戻す。
【0057】上記の例がホストから周辺デバイスへの単
一の方向での転送としてあるけれど、図示したシステム
は何れか二つの機能ユニット間での転送ができるという
ことは理解できるであろう。
【0058】仮想チャンネル 仮想チャンネルは、入力/出力コントローラ10によっ
て作成され、そしてこの入力/出力コントローラ10が
ホストプロセッサ40あるいは周辺デバイス50の要求
に基いて新規のチャンネルを割り当てて初期化する。こ
のチャンネルの作成は、この入力/出力プロセッサの
「接続管理装置」のサブセクションによって実行され
る。
【0059】要求を発生する際に、リクエスタは、所望
チャンネル(例えば、読み出しあるいは書き込み)のの
方向を特定する。チャンネルを確立できると仮定する
と、入力/出力プロセッサ10は、チャンネル番号を表
す整数をリクエスタへ戻す。図の実施例において、入力
/出力コントローラ10は、次の内の何れか二つの間で
チャンネルを発生できる:ホストデバイス40、周辺デ
バイス50、入力/出力コントローラの接続管理装置。
【0060】好ましくは、小さい番号のチャンネルは、
前もって割り当てた機能のために保留にされる。こうし
て、チャンネル0及び1は、システムレベル通信のため
に保留にされ;チャンネル2及び3は、常駐デバッガの
ために保留にされ;チャンネル4及び5は、「接続管理
装置」への通信のために保留にされ;チャンネル6及び
7は、ドライバ制御管理装置のために保留にされる。こ
れらの前もって定義したチャンネルは、コードがメッセ
ージの最大のブロックの大きさを定義する各チャンネル
をサービスして、信号ブロックメッセージを運ぶのが好
ましい。
【0061】前もって定義したチャンネルに加えて、各
機能ユニットは、任意の数の追加的な単一方向のチャン
ネルの作成を要求できる。
【0062】仮想チャンネルが一旦作成されると、機能
ユニット40及び50はチャンネルがフラッシュされる
か、クローズされるか、接続を断たれるかを要求でき
る。GIZAエンジンのバックプレーン内に配置された
この接続管理装置は、これらの要求を実行する。チャン
ネルをフラッシュするプロセスは、要求デバイスへ通知
されたいくつかのMDBを戻し、記憶装置要素15及び
20内に記憶されてまだ処理されていないいくつかのM
DBを検索する。すでに対にされて転送するいくつかの
MDBは、それらの転送を完了して戻される。
【0063】チャンネルのいずれかの側の機能ユニット
は、その側とそのチャンネルのその側だけをフラッシュ
できる。これは、システム使用者による入/出力アボー
トコマンドの結果として起こるかもしれない。これはま
たこのチャンネルのクロージングへの前置きとして起こ
るかもしれない。一旦フラッシュ要求が入/出力によっ
て受信されて処理されると、チャンネルは「フラッシン
グ(flushing)」とマークされ、転送されるいくつかの
MDBのペアは終了可能にされ、整合を待っているフラ
ッシング側からのいくつかのMDBは「フラッシュした
(flushed )」とマークされてそれらの機能ユニットへ
戻される。ファンダメンタルなデータ駆動プログラミン
グのルールは、フラッシュ動作中にも監視される:与え
られたチャンネルのいずれに対しても全てのMDBはそ
れらが提示された命令で戻される。
【0064】機能ユニットは、またチャンネルがクロー
ズされることを要求できる。この状態を要求すると、機
能ユニットはそれがMDBをチャンネルへもう提示しな
いだろうことを示す。一つの機能ユニットがクローズさ
れたチャンネルの側を宣言する場合、入力/出力プロセ
ッサ10は、その機能ユニットからのそのチャンネルに
対するMDBをもう受け取らないだろう。両方の機能ユ
ニットがクローズされたチャンネルを宣言する場合、チ
ャンネルは後の再使用に対するチャンネルのフリープー
ルへ戻される。好ましい実施例において、コーリングデ
バイスは、前もってフラッシュされたチャンネルだけの
クローザーを要求する。
【0065】接続されてないMDBは、ホストデバイス
40あるいは周辺デバイス50の何れか一方から提示で
きるが、しかし、発行される場合、その整数のチャンネ
ル番号によって同定されるチャンネルに同時にチャンネ
ルの両側を無理にフラッシュしてクローズさせる。
【0066】好ましいシーケンスにおいて、チャンネル
はチャンネルをクローズするあるいはチャンネルの接続
を断つ前にフラッシュされる。しかしながら、チャンネ
ルの使用はまた、例えば入/出力アボート要求の一部と
して通知されたMDBを検索するために、フラッシュコ
ールを介して一時的に割り込みできる。MDBがいった
ん検索されると、システムドライバは、再開始ライブラ
リルーチンをアクセスすることによってスティルオープ
ンチャンネルを使用して再開できる。前の接続ルーチン
によって発生されるチャンネル番号は、提示されたMD
Bを運んで記憶して再開する仮想チャンネル要素25内
に位置付けられるチャンネルを同定する。
【0067】図3は、多数のリターンFIFOもしくは
リングを含んでいる好ましいリターンFIFO要素を示
している。
【0068】ホストデバイス40と周辺デバイス50の
両方に含まれるリターンFIFOには種々のオプション
がある。その理由は、各デバイス40、50がリターン
FIFO要素44、54内に含まれる多数のリターンF
IFOをもつことを可能にするためである。リターンF
IFOは、(リングが前もって空であれば)MDBがリ
ング上に位置付けられるとき割り込みリングが割り込み
を報知するように設計されるからその機能ユニットを中
断してもしなくてもよい。中断しない場合、その後、こ
れは機能ユニット内のコードによってポーリングされね
ばならない。通常プロセッササイクルの期間でもっと効
率よいポーリングは、割り込みを処理することが必要と
されるオーバーヘッドに依存して待ち時間が少ない場合
もある。
【0069】本発明の好ましい実施例は、カスタムポー
リングされたリングもしくはFIFOとポーリングされ
たリングもしくはFIFOとを使用する。通常ポーリン
グされないカスタムポーリングされたリングは、特殊な
環境であるかもしれない。例えば、カスタムポーリング
されたリングは、システムが停止されている間のデバッ
ガ状態にある間に試験プログラムに対してだけあるいは
CPUのPROMによって使用されるかもしれない。ポ
ーリングされたリングは、しばしばメインループ内でも
しくはスケジュールコードにおいてシステムをポーリン
グする。
【0070】図示した実施例をさらに完璧に理解するこ
とは、以下のセクションを参考にすることによって達成
できる。この中で、入力/出力コントローラ(もしく
は、入力/出力プロセッサ、IOP)10の好ましい図
示のデータ転送システム5は、用語「Giza」によって参
照される。
【0071】入力出力コントローラ(GIZA)は、一つの
アドレススペースから別のスペースへデータのブロック
を転送する時(例えば、I/OアダプタIOA48’か
らホスト40のメインメモリ43へデータを移動する
時)により効率よい入力/出力コントローラ18’、2
0’のアーキテクチャを作るメッセージ・パッシング・
ファシリティである。
【0072】この図示したシステムは、二つの機能ユニ
ットのメモリ間のデータを転送する。これは、二つの
「ハーフ・リクエスト」整合させることとこれらの半分
からの全転送リクエストを形成することとによってこの
転送を制御する。
【0073】各ハーフ・リクエストは、メモリが転送中
に読み出しあるいは書き込まれるだろう機能ユニットに
よって発生される。従って、ハーフ・リクエストは、チ
ャンネル番号、転送方向(読み出しあるいは書き込み)
及び(さらに以下で記述する)リターンFIFO番号の
ような制御パラメータとともにそれぞれのメモリ内の位
置を特定する。
【0074】コントローラと各機能ユニットとの間は、
であり、上記のハーフ・リクエストを表すメッセージ記
述子ブロック(MDB)のアドレスを転送するための二
つもしくはそれ以上のFIFOそれぞれはコントローラ
と各機能ユニットとの間にある。これらのFIFOは、
MDB自身を転送するのではなくMDBのアドレスを転
送する。簡潔のために、このテキストにおいて、MDB
のポインタのFIFO内の記憶装置は、これらのFIF
O内のMDB自身の記憶装置として参照できる。
【0075】コントローラとその機能ユニットの各々と
の間のFIFOについて、一方は、コマンドFIFOと
呼ばれ、複数のMDBを機能ユニットからコントローラ
へ運ぶ;もう一方はリターンFIFOと呼ばれ、複数の
MDBをコントローラから機能ユニットへ運び戻す。
【0076】コントローラの動作 本発明の技術を考察すると、図示した入力/出力コント
ローラ(そして、他の機能ユニット内の対応する機能)
がハードウエアあるいはソフトウエアにおいて実行でき
ることは理解されるだろう。さらに、コントローラ自身
は、単体ユニットもしくは通信媒体を介して結合される
記述したユニットの収集として実行できる。
【0077】構わずに、コントローラは三つのステージ
を実行する。 1.整合 2.データ転送 3.結果報告
【0078】ハードウエアの実行は、これらのセクショ
ンに対して別々のプロセッサを持つことができる。これ
らのプロセッサは、自主的に走り、作業を待つことによ
って一つのセクションから次のセクションへの通信を行
う。ソフトウエアの実行は、単体のプロセッサを使用
し、プログラム制御の転送によって一つのセクションか
ら次のセクションへの通信を行う。
【0079】ステージ1:整合 時間のある点、コントローラは、これに結合された空で
ないコマンドFIFOからMDBを取り除く。そのMD
Bから、チャンネル番号は、抜き出された後、マッチテ
ーブルと呼ばれるメモリの配列へのインデックスとして
使用される。マッチテーブル内の各エントリは、次のこ
とを含む小さなデータ構造体である。
【0080】好ましいソフトウエアの実施 MDBのリストの先頭を指すポインタ。MDBのリスト
の後尾を指すポインタ。書き込み側のための機能ユニッ
トのデザインネータと、読み出し側のための機能ユニッ
トのデザインネータと、書き込み側での状態(閉鎖、開
放、フラッシング)と、読み出し側での状態(閉鎖、開
放、フラッシング)と、その側がリストの中に複数のM
DBをもつインディケータと、を含む状態の情報。
【0081】好ましいハードウエアの実施 書き込み側のためのMDBのリストの先頭を指すポイン
タ。書き込み側のためのMDBのリストの後尾を指すポ
インタ。読み出し側のためのMDBのリストの先頭を指
すポインタ。読み出し側のためのMDBのリストの後尾
を指すポインタ。データ転送ユニットによって処理され
るべき整合をもつ別の整合テーブルエントリのインデッ
クス。書き込み側のための機能ユニットのデザインネー
タと、読み出し側のための機能ユニットのデザインネー
タと、書き込み側での状態(閉鎖、開放、フラッシン
グ)と、読み出し側での状態(閉鎖、開放、フラッシン
グ)と、その側がリストの中に複数のMDBをもつイン
ディケータと、を含む状態の情報。
【0082】好ましいマルチピース、説明したハードウエアの実施 電流側のためのMDBのリストの先頭を指すポインタ。
電流側のためのMDBのリストの後尾を指すポインタ。
データ転送ユニットによって処理されるべき整合をもつ
別の整合テーブルエントリのインデックス。電流側のた
めの機能ユニットのデザインネータと、残りの側のため
の通信線路のデザイネータと、電流側での状態(閉鎖、
開放、フラッシング)と、残りの側での状態(閉鎖、開
放、)と、転送方向(電流側からの書き込み/電流側へ
の読み出し)と、を含む状態の情報。 (電流側からの書き込みの場合)残りの側で待機される
ことを知られるMDBの数の計数。 (電流側への読み出しの場合)残りの側へ報告されるこ
とを必要とするMDBの数の計数。
【0083】MDBに対するチャンネル番号が違法(定
義した整合テーブルの範囲外)な場合、MDBはエラー
としてマークされてただちにステージ3、結果報告へ送
られる。さもなければ、このMDBに対するエントリは
試験される。転送方向はMDBから取り出され、整合テ
ーブルエントリの適当なフィールドは試験されてそのチ
ャンネルがその転送方向に対して開放であるかどうかを
決定する。
【0084】チャンネルが閉鎖の場合、MDBは、エラ
ー状態であり、ただちにステージ3へ送られる。チャン
ネルがフラッシングの場合、MDBは「フラッシュされ
た(flushed )」とマークされて直ちにステージ2へ送
られる。ステージ2では、MDBはデータ転送を行わず
にそのチャンネルから進歩もしくは依存におけるいくつ
かの転送の後ろで現実に待つ。(コントローラは、プロ
セスを通じていずれかの現存のチャンネルに対するMD
Bの命令を保存することを約束する。そのため、MDB
は、これらがコマンドFIFO上に達する同一命令で選
択したリターンFIFOを介して戻される。)
【0085】MDBがこれらの試験を合格する場合、整
合テーブルエントリは試験されて、適当に連結リスト上
で待機させられるこの側からすでにMDBがあるかどう
かを決定する。もしあれば、このMDBは、(標準的な
単一のスレッド連結リストの方法を使用する)そのリス
トの最後に追加されて、そしてこのMDBのこのステー
ジの処理は終了した。
【0086】この側にすでに待機させられているMDB
がない場合、整合テーブルは試験されて他の側のために
待機させられている複数のMDBがあるかどうかを決定
する。もしあれば、このMDBと他の側に待機させられ
ている第一MDBとは、整合を構成する。これらの内の
二つは、ステージ2(つまり、データ転送)に待機させ
られ、そしてこのステージのこのMDBの処理は終了し
た。
【0087】いずれかの側に待機されているMDBがな
い場合、このMDBはこっちの側に待機されそしてこの
MDBのこのステージの処理が終了した。
【0088】実施が分散される場合(マルチプル−ピー
ス)、その後いつ受信MDBがチャンネル上で待機され
ても、それについての情報(少なくともそのチャンネル
番号)は、コントローラの適当な他のピースへのメッセ
ージ(整合テーブルを更新する際に使用するメッセー
ジ)として記録される。このようなテーブルは、直ちに
送ることができるか、あるいは、好ましい実施において
は、タイマーが数えだすあるいは更新メッセージが完全
になって送られねばならなくなるまでバッチされる。い
つ送信MDBが他の側の受信MDBのノン−ゼロ計数で
一致されても、それは他の側への転送を制御するのに待
機させられる。この転送はMDBによって記述されるメ
ッセージであり、チャンネル番号で前置きされる。いつ
メッセージが他の側から受信されても、この前置きチャ
ンネル番号が最初に受信され、第一受信MDBはそのチ
ャンネル番号によって示される整合テーブルエントリか
ら取り出されて入力メッセージを記憶するところを制御
するのに使用される。
【0089】ステージ2:データ転送 フラッシュされたMDBを除いて−−実転送の後ろの線
路で単に待機している−−コントローラのデータ転送ス
テージはオーダーしたリストもしくはFIFO内の整合
されたペアのMDBを受信する。別の転送を行なう時間
が来ると、リストの先頭のペアは比較されて読み出しM
DBの中に示されるメモリの量が書き込みMDBの中に
あるのと少なくとも同量あるかどうかを決定する。もし
そうでない場合には、オバーフローエラーとなりMDB
はエラーと表示されて転送は実行されない。(分散され
る場合において、この異常なエラーは、転送を初期化し
て、交渉を待機して両方の実施は可能であるがルームが
あるかどうかを決定するのでなく受信エンドでのオーバ
ーフロービットを捨てることによって最前に扱われ
る。)書き込まれる全てを受信するルームがある場合、
転送が実行される。ステージ2の完了において、正常か
異常かのどちらか、ペアのMDB(あるいは単一のフラ
ッシュされたMDB)は、ステージ3(結果報告)に沿
って送られる。
【0090】ステージ3:結果報告 データ転送が完了すると、転送の前あるいはその最中に
検出されたいくつかのエラーが両方のMDBにおいて注
釈される。エラーがない場合、それも注釈され、さら
に、少なくとも受信MDBは現実に書き込まれたデータ
の長さをその中に記録される(メッセージを受信するバ
ッファの長さを特定するフィールドの横側)。(図示し
た実施例において、両方のMDBは移動される実長さを
受信する。)
【0091】受信したこの状態情報をもつMDBは、M
DB内に示されるリターンFIFOへ戻って書き込まれ
る。このようなリターンFIFOがない場合、その機能
ユニットに対するFIFO番号0が使用される。そのF
IFOは常に存在していなければならない。選択したリ
ターンFIFOが満杯である場合、そのFIFOと関連
づけられるMDBの連結リストがオーバーフローのMD
Bを保持するのに使用され、そしてMDBは、スペース
が利用できるようになるようにそのリストからFIFO
へ定期的に移動される。
【0092】機能ユニットの動作 各機能ユニットにおいて、データ転送を達成するために
二つの動作が実行されねばならない: 1.MDBをコマンドFIFOに与えること 2.リターンFIFOからMDBをドレインすること
【0093】MDBをコマンドFIFOに与えること 図示した実施例では、各機能ユニットにおいて、各機能
ユニットをプログラムされたディジタルデータプロセッ
サであると仮想すると、MDBのリストを与えられる
「提示(submit)」と呼ばれるライブラリルーチンがあ
る。これらのMDBはそれらのコマンドFIFOへ提示
されるべきである−すなわち、リストの中のMDBは、
(何か他の提示動作からの)他のMDBがリストの中間
にまき散らされずに、命令でコマンドFIFOの中に現
れなければならない。
【0094】この技術に精通したものであれば、遠隔手
続呼び出しが一対のMDBによって実行できるという
(一方はチャンネルへ書き込み他方は別のチャンネルか
ら読み出す、ここのこれら二つのチャンネルは要求を読
み出すための遠隔プロセスと返事を書き込むための遠隔
プロセスとによってそれぞれ使用される)ことに注目す
るだろう。二つのRPCの要求(W1、R1)と(W
2、R2)が非アトミック態様で提示され、オーダリン
グ(W1、W2、R2、R1)は、コマンド1に対する
返事がリクエスタ番号2そしてその逆となる発生する。
【0095】異なる機能ユニットは、異なる特性をも
つ。必要であれば、「提示」は、最小単位のコマンドF
IFO提示を保存するために、割り込みレベルを不可能
にしロックをセットしなければならないかもしれない。
【0096】コマンドFIFOは(ハードウエアの実行
にとって最善であるような)MDBのリストと、(ソフ
トウエアの実行にとって最善であるとみなされた)個々
のMDBを運ぶことができる。前者の場合であれば、最
小単位がコントローラによって保証される。後者の場合
であれば、機能ユニット内の提示ルーチンによって保証
されねばならない。
【0097】オーバーフローリストと呼ばれる各コマン
ドFIFOに関連づけられる連結リストが存在する。提
示ルーチンがコマンドFIFOがほとんど満杯であると
いうことを発見する場合(現在、これがひとつ以上のM
DBをもつとき)、あるいはオーバーフローリストが空
でない場合、提示されたMDBはオーバーフローリスト
の最後に位置付けられる。オーバーフローリストが開始
されると、特別のMDB(オーバフロートレーサーと呼
ばれる)は、提示されたMDBの代わりにコマンドFI
FO上に位置付けられる。このオーバーフロートレーサ
は、チャンネル番号が違法となるMDBである(その結
果、コントローラによって直ちに拒絶される)。これ
は、全てのオーバーフローリストを取り出しこれを提示
する(以下に記述する)コールバックルーチンをもつ。
オーバーフローリストと共にコマンドFIFOは完全に
できないMDBに対して待機機構を提供する。したがっ
て、提示ルーチンはルームを待機することをブロックし
てはならない。
【0098】リターンFIFOからMDBをドレインすること 異なるリターンFIFOは、機能ユニットのコードで異
なった位置でドレインされる。その理由は、設計におい
て考慮に入れられる多数のリターンFIFOが存在する
からである。あるものがドレインされるべき必要がある
各々の位置について一つ存在する。例えば、割り込みレ
ベルにおいてポリングループ(所望されるXのそれぞれ
の数値に対して異なったFIFOあらゆるX秒)におい
ていくつかのプロセスからポリングされるシステムのレ
ストの正常な動作を中断したデバッガからポリングされ
るドレインされるべきFIFOの場合がある。
【0099】好ましい実施では、このようなFIFOの
要求が六つより少なくてよいことがわかった。多数の機
能ユニットは一つのFIFOだけ必要であることがわか
った。
【0100】各々の場合に、リターンFIFOは、「コ
ールバック」と呼ばれるルーチンのアドレスをそのMD
Bから移動しこのルーチンを呼び出して唯一の引き数と
してMDBを指すポインタを与え、FIFOの先頭から
一つのMDBを指すポインタを繰り返し移動させること
によってドレインされる。
【0101】制 限 コントローラあるいはそのFIFO内の記憶を待機しな
がら、このプロセスのノープレイス(no place)でブロ
ックしている。こうして、コントローラによって処理さ
れるいずれか一つのチャンネルもしくは全セットのチャ
ンネルを待機することができるMDBの数に関する制限
はない(メモリの素のセクションを異なるMDBとそれ
らが記述されるメッセージとに割り当てる必要によって
課せられる制限を除いて)。
【0102】チャンネルの数に関して制限がある。これ
は、整合テーブルの大きさによって制限される。整合テ
ーブルエントリは、チャンネルの数が図示した実施例に
よって出会わされた最高のケースにおいて必要とされる
数を容易に越えることができるということを十分小さ
い。整合テーブルが存在する更に多くのチャンネルを持
つことが必要となる場合、標準的な技術を使って単一の
仮想チャンネル以上の多数のサブチャンネルを多重送信
することが可能である。
【0103】Gizaの範囲 図4に示すように、Gizaは四つの主要な構成要素を
含んでいる: Gizaエンジン(データー・ムーバー) Gizaサポートルーチン Gizaライブラリルーチン
【0104】Gizaエンジン ハードウエアにおいて実行できる図示されたGizaエ
ンジンは、IOPファームウエアの一部としてのソフト
ウエアにおいて実行される。これは、存在するIOP機
能の横で動作する。
【0105】Gizaサポートルーチン Gizaサポートルーチンは、Gizaサポートルーチ
ンがデータの通常の移動で働かないGizaエンジンと
別個のものである。これらは主に、結合管理、すなわ
ち、核(kernel)とIOA(もしくはI/Oコントロー
ラ)との間の開及び閉のGiza結合を提供する。
【0106】Gizaの核ライブラリルーチン 核ライブラリは、動作システムの核プログラマーが以下
のことを可能にするプログラム化インターフェースであ
る:Giza結合をセットアップするこれらの結合に亙
るデータの転送を行うことこれらの結合をブレイクする
ことこのインターフェースは、例えば、出願中に共に譲
渡された1991年6月28日に出願された米国特許出
願第723,065 号と本発明の譲受人により市販されている
VOSTMオペレーティングシステムとに開示されたオペ
レーティングシステムと結合して使用するためのもので
ある。
【0107】GizaのIOAライブラリルーチン IOAライブラリルーチンは、IOAプログラマに次の
ことを可能にさせるIOAプログラム化インターフェイ
スである。Giza結合をセットアップするこれらの結
合に亙るデータの転送を行うことこれらの結合をブレイ
クすること
【0108】Gizaの設計 Gizaは、データドリブンプログラミングの概念を使用す
る。データドゥリブンプログラミングは、自律プロセス
の集合体を包含しており、そのプロセスの各集合体はそ
れ自体の機能ユニット(ここで使用されるように、機能
ユニットは例えば独立のプロセッサとし得る)により支
配される。機能ユニットは、一般に、対等物対対等物の
関係を有しており、いずれも他の従属体に対する主体
(マスタ)ではない。各機能ユニットは、他の機能ユニ
ットと独立の速度で動作する。一つが休止したりスピー
ドアップした場合、それはシステム動作の適正性に影響
を及ぼさない。
【0109】決定論的結果を補償するため、すなわち所
与の入力がタイミングの如何に拘りなく同じ出力を生ず
ることを補償するために、特定のルールがデータドリブ
ンプログラミングを支配している。かくして、Gizaは、
タイミングバグにより傷つけられないようにこれらのル
ールを使用して設計された。詳述すると、これらのルー
ルとしては下記のものが含まれる。すなわち、 1.MDBは、一度提示されると、撤回することができ
ず、変更されるべきでない。 2.任意の単一のチャンネル上の全MDBは、データ転
送およびコールバック処理中とも、それらが提示された
のと同じ順序で処理される。これは、フラッシュ、クロ
ーズおよび切断のような異状の場合を含む。 3.MDBに対するタイムアウトはない(何故ならば、
これは提示されたMDBの撤回に等しいからである)
【0110】Gizaを使用するドライバは、データドリブ
ンプログラミングに従うことを必要としないことに注意
されたい。むしろ、Gizaを使用するドライバは、これら
のルールに従いかつシステムにより提示される機械がル
ールを保っていることを知ることを許容せしめられる。
【0111】Gizaエンジンはまた、他のデータ転送シス
テムに優る一群の利点をもたらす。これらの利点の二三
のものを以下に掲げる。
【0112】以下、Giza機構の数種の長所について記述
する。 〇機能ユニットの対等物対対等物の等価性 GizaはIOAプロセッサおよびホストシステムに対して
同じ視野に立つ通信を提示する。インターフェースは両
側とも本質的に同じである。(ただし、ホストコンピュ
ータ40は、普通、接続管理に責任を取ることに留意さ
れたい)。 〇アドレススペース保護。 Gizaはデータを一つのアドレススペースから他のアドレ
ススペースへ転送する。このプロセスにおいては、Giza
およびそのDMAのみが両アドレスを知る。通信してい
るパートナーのいずれも、他のパートナーのスペースの
アドレスを知らない。かくして、いずれのパートナーも
偶発的に他のスペースにアドレスできない。 〇タイミングの非被害性 Gizaはデータドリブンプログラミングを支配するルール
にしたがって設計されているから、タイミングバグによ
り害を受けない。Giza動作に対する競争状態はなく、機
能ユニット速度に問題を引き起こすような変化を生じさ
せる機会もない。各機能ユニットは、例えば独立に作用
する。 〇直接的割込みの指令 Gizaは、開発者に対して、送信または受信される各メッ
セージに使用されるべき割込み処理手続きを特定する能
力を提示する。この割込みルーチンは、判断トリーを横
切ることを要せずに直接請求される。 〇グラウンドレベル割込みバッチ処理 Gizaは、開発者に、例えばスケジューラがランすると
き、またはストリームスサービスルーチンがランすると
き、割込みをグラウンドレベルでバッチで到来せしめる
ことについての選択を与える。これは、グラウンドレベ
ルでなされるべき仕事に単に待ち行列を作る割込みコー
ドのオーバーヘッドを排除する。
【0113】[Gizaメッセージの梗概]Giza メッセー
ジを送信および受信するための手続きは、一つの機能ユ
ニットに、処理のため他側に送信されるべきデータを用
意すべきことを、また他側に必要に応じてデータを受信
し処理するように用意すべきことを要求する。データ
は、Gizaメッセージの一部として、二つの機能ユニット
間を番号付きGizaチャンネルを介して通される。
【0114】メッセージ路 図2は、Gizaメッセージ路を示している。例示の実施例
は、メッセージを送信および受信するためソフトウェア
リングを使用する。MDBは、命令(すなわちto Giza
)FIFO15,20によりGizaに提示され、応答(すな
わちfrom Giza )リング上で帰還受信される。各側は、
多数の応答リングを有してよいが、命令リングは唯一つ
である。データを送信する側は、データに対するポイン
タを含むMDBをその命令リングに送り、受信側は、バ
ッファに対するポインタを特定するMDBをその命令リ
ングに送る。
【0115】メッセージ通信は、番号付きチャンネルを
介して行なわれる。これらのチャンネル番号は、個々の
Gizaエンジンのみに適用される。メッセージまたはバッ
ファに対するMDBがGizaに提示されるとき、MDBは
そのことが意図されるチャンネル番号を含む。MDB をGi
zaに提示するライブラリーコール(giza submit()) は特
定のGizaエンジンを含むバックプレインスロットの番号
が与えられる。各Gizaエンジン上の低番号付きチャンネ
ル(ここでは、チャンネル1ないし7)は、予め割り当
てられた機能に対して逆転される。また、特定のGizaエ
ンジンと関連する各I/O アダプタカードは、逆転された
予定されたチャンネルを有する(ここでは、チャンネル
8ないし119)。
【0116】メッセージ供給プロセスの一般的記述 メッセージが、5つの別個の段階で一つの機能ユニット
から他の機能ユニットに供給される。 1.機能ユニットAが、出メッセージについて記述しか
つすでに開かれたチャンネルを特定するMDBをGizaに
供給する。 2.機能ユニットBは、メッセージを受信するためのバ
ッファを記述しかつ機能ユニットAと同じチャンネルを
特定するMDBをGizaに提示する。 注:最初の2つの段階は、いずれの順序でも起こり得
る。また、両側に複数のエントリを作り、それらがパー
トナーMDBが現われるまで待行列化されるすることも
できる。 3.両機能ユニットがMDBを供給してしまうと、Giza
はAからBへデータ転送を遂行し、各MDBに完了状態
を記す。 4.機能ユニットAは、Gizaから戻るそのMDBを受信
し、メッセージが特定のチャンネルを介してうまく転送
されたことを確認する。 5.機能ユニットBは、メッセージが特定のチャンネル
を介してうまく到着したことの確認で、Gizaから帰るそ
のMDBを受信する。
【0117】Gizaメッセージ供給の概念的基準 Gizaメッセージを利用するI/O ドライバは、ここでI/O
デバイスを遠隔サブルーチンまたはパイプラインとして
想像できる。
【0118】図5、6および7は、遠隔サブルーチンモ
デルを示しており、I/O ドライバは、そのパートナーに
メッセージを送り、応答を得て、処理を継続する(サブ
ルーチンからの復帰であるかのように)。
【0119】図8は、パイプライン化を許容するモデル
である。パイプラインモデルにおいては、I/O ドライバ
コード送信メッセージ部分は、例えば、エンジンにメッ
セージを提示する。しかし、その後応答を待つ必要はな
く、何か他のことを行い続ける(例えば、他のメッセー
ジをエンジンに提示する)。
【0120】Gizaは、パイプラインモデルに基づく、す
なわち、Gizaエンジンは、パイプライン内の1ブロック
と見ることができる。GizaはMDBを取り、それらを保
持し(他の機能ユニットからの整合するMDBが存在す
るまで)あるいはそれらを整合するMDBと対にし、転
送を行なう。究極的に、Gizaエンジンは、MDBを、ド
ライバコードの最初の部分と恐らく関係のないドライバ
ーコードの他の部分に戻す(例えば、受信コードは、単
にMDBおよびバッファをそのドライバに対するフリー
プールに戻してもよかろう)。同様に、受信側では、Gi
zaにMDBを与えるコードは、単に解放されたバッファ
を取り扱うに過ぎない。 充填されたバッファを受信す
るコードは、新しいメッセージを、それらを担持するた
めに提供されたバッファについて懸念することなく、新
しいメッセージとして処理できる。メッセージ記述子ブ
ロックは、ホストデバイス、周辺デバイスおよびGiza間
において転送される信号を表わす。それらの構造は重要
であり、以下の如くである。
【0121】Gizaメッセージ記述子ブロック Gizaはメッセージ記述子ブロック(MDB) を採用するが、
これは下記の情報をGizaに提供する構造である。すなわ
ち、 〇送信側では、メッセージの記述、受信側では、メッセ
ージを受信するバッファの記述。 〇制御情報、例えばGizaチャンネル番号。 〇状態情報、例えば実際に転送されるバイト数。 〇割込み指示(ベクトング)、コールバックルーチンア
ドレスの形式。
【0122】MDBは、Gizaに対する単なる一組のパラ
メータではない。一度Gizaに提示されるとGizaエンジン
の性質となり、それが戻されるまで(完了またはチャン
ネルフラッシュの際)その性質を留めるメモリブロック
である。1より多いMDBを提示すると、Gizaエンジン
はMDB中の筋道をランし、各仮想チャンネルに対する
連結リストにおいてそれらを待ち行列化する。
【0123】基本のMBDは一つのブロックと一つのセ
グメントを有するが、開発者は、所望に応じてメッセー
ジのデータ部分を構成し得る。例えば、各々異なる長さ
を有し、各々複数のセグメントより成る複数の(マル
チ)ブロックを有するように(拡散−収集DMA動作の
ため)。
【0124】他の方法に比して、マルチブロックメッセ
ージは、特定の問題を処理する実現可能な方法である。
例えば、ホスト側は、ディスクに4096バイトページのデ
ータを書き込むことを望むものと仮定する。データを核
からIOAに移すため、ホスト側は、2つの単一セグメ
ントブロック(書込み命令に対して一つの16バイトブロ
ック、およびデータに対して一つの4096バイトブロッ
ク)を有するMDBを提示する。
【0125】IOAは、どの程度のバイトが到来してい
るかを知ることはできないから、2ブロックを有するバ
ッファを記述するMDBを提示し(命令に対して一つの
128バイトブロックおよび二つの2048バイトセグメント
を有する第2のブロック)到着するデータを保持する。
【0126】ホスト側から到来する命令部分は単に16バ
イトブロックのデータに過ぎないから、IOA側におい
ては、単に16バイトしか128 バイトバッファに挿入され
ない。残りは未使用のままの残り、4096バイトのデータ
が二つの2048バイトセグメントを満たす。
【0127】例示の具体例において、MDBは、ヘッ
ダ、ブロックヘッダ、セグメントヘッダ、フィールド記
述子およびデータバッファより成る。下記は、これらの
要素をさらに詳細に記述するものである。 MDBの構成 例示の実施例において、MDBは、ヘッダ(sys mdb hea
der またはioa mdb-header) 、1または複数のブロック
ヘッダ(block header) 、および各ブロックに対する1
または複数のセグメントヘッダ(sys block segmentまた
はioa block segment )。
【0128】MDBヘッダフィールド 例示の実施例において、MDBヘッダは、GIZAのホスト
およびIOA側間において異なる。これは、物理的ポイ
ンタがこれらの2機能ユニット間において異なるサイズ
より成ることにもよる。
【0129】下記は、ホスト側のMDBヘッダを示す
(データ構造を記述するためCプログラミング言語フォ
ーマットを使用)。
【表1】 typedef struct LONGMAP sys mdb header { void (*callback)(struct sys mdb header *mdbp); struct sys mdb header *salvage list fp; struct sys mdb header *salvage list bp; struct sys mdb header virt next link; sys phys ptr phys next link; long MDB length; /* For Tarl's FDDI */ channel number channel ID; struct sys mdb header *return ring item; /* this MDB */ giza msg status template message status; giza control template control; unsigned char return ring index; /* choice of ring */ unsigned char number of block; } sys mdb header;
【0130】下記はIOA側MDBヘッダを示す。
【表2】 typedef PACKED struct SHORTMAP ioa mdb header { void (*callback)(struct ioa mdb header *mdbp); ioa phys ptr phys next link; struct ioa mdb header *return ring item; /* this MDB */ channel number channel ID; giza msg status template message status; giza control template control; unsigned char return ring index; /* choice of ring */ unsigned char number of blocks; } ioa mdb header;
【0131】MDBをGizaに提示すると、発呼者は下記
のヘッダ情報を提供する。
【表3】○callback ○virt next link(1より多いMDBを提示する場合) ○MDB length ○channel ID ○control ○return ring index ○number of blocks
【0132】Giza エンジンはmessage statusフィール
ドを充填する。フィールドの記述 Callback データが転送された後にMDBが戻るとき呼ばれるルー
チンのアドレス。 virt next link 1以上のMDBを提示する場合の次のMDBの仮想アド
レス。そうでない場合はNull。 MDB length ホスト側における全MDBのバイト長さ。これは、MD
Bヘッダならびにブロックおよびセグメントヘッダを含
む。 channel ID MDBが送られるGizaチャンネル番号。 control 下記はMDBヘッダコントロールフィールドに対する値
である。 #define RECEIVE 0x00/*Receiv/ MDB */ #define SEND 0x01 /* Send MDB */ return ring index このMDBが戻る応答リングのインデックス number of blocks ブロックヘッダの数。 message status Gizaエンジンはこのフィルタを充たす。可能な値は下記
に示される。
【0133】/* メッセージ状態に対する値 */
【表4】 #define GOOD DMA 0; #define FLUSHED 1; /* MDBフラッシュ */ #define BLOCK ERROR 2; /* ブロック数誤り */ #define INVALID CHANNEL 3; #define DEAD IOA 4; #define DEAD IOP 5; #define PER BLOCK ERROR 6; /* block header's status 参照 */ #define ILLEAGAL INTERNAL STATE -1;
【0134】ブロックヘッダフィールド ブロックヘッダは物理的ポインタを全然もたず、それゆ
えホストおよびIOA側とも同じである。下記はブロッ
クヘッダの構造を示す。
【表5】
【0135】発呼者は、MDBに対して下記のブロック
ヘッダ情報を提供する。 ○status ○block control ○number segments
【0136】エンジンは、もし使用されていればblock
checksumを累積する。フィールドの記述 block header.status ブロック状態フィールドに対する値は下記に示される。
【表6】 typedef unsigned char giza blk status template; #define giza blk status template error 0x80 #define giza blk status template verify error 0x40 #define giza blk status template parity error 0x20 #define giza blk status template checksum error 0x10 #define giza blk status template overrun 0x08 #define giza blk status template crossed page boundary 0x04
【0137】block header.block control ブロック制御フィールドに対する値は下記に示される。
【表7】 #define giza block control template cache consistent 0x80 #define giza block control template append checksum 0x40 #define giza block control template check checksum 0x20 #define giza block control template gen checksum 0x10 注:ソース(書込み側)は3つ存在するchecksum方法を
定める。すなわち ○append checksum ○check checksum ○gen checksum
【0138】append checksum の場合、受信装置は、送
信装置からappended checksum を有するデータを得るこ
とを予期する。そうでなければ、checksumエラーが発生
される。
【0139】check checksum 選択の場合、ソースは、
両側に対してデータブロックの終了にてchecksumを提供
する。二つのMDBがなおエンジン内にある間に、エン
ジンは両checksumが整合することを保証する。もしそう
でなければ、checksumエラーが発生される。
【0140】gen checksum法は、この時点においては使
用されない。 block header.number segments セグメントヘッダの番号。 block header.block checksum checksumが使用される場合、これは0でなければなら
ぬ。
【0141】セグメントヘッダフィールド セグメント記述子は、ホスト側およびIOA側において
異なる。これは物理的なアドレス長が異なるからであ
る。下記はホスト側セグメント記述子を示す。
【表8】
【0142】下記はIOA側セグメント記述子を示す。
【表9】
【0143】発呼者はセグメントヘッダに対して下記の
情報を提供する。 ○sys block segment.address ○sys block segment.seg length
【0144】Gizaエンジンは下記を充たす。すなわち、 sys block segment.length moved( またはioa block se
gment.length moved).フィールドの記述 sys block segment.address データバッファの物理的アドレス。 sys block segment.seg length データのバイト長。 sys block segment.length moved 実際に移動されるデータのバイト長。
【0145】下記は潜在的システム使用者により開発さ
れるようなサンプルMDBを表わす。サンプルMDB 下記はサンプルMDBを示す。
【表10】 typedef struct /* 1 ブロックのHost側MDB,1セグメント */ { sys mdb header hdr; block header blk; sys block segmen seg; } sys mdb 11; typedef strut /* 1ブロックのIOA 側MDB,2セグメント */ { ioa mdb header hdr; block header blk; sys block segmen seg[2]; } sys mdb 12;
【0146】例示の実施例において、機能ユニット内の
コードは、MDBをGizaに提示する。これは、MDBお
よびその記述されるメッセージの(を変更する許可の)
所有権が、取り決めにより、機能ユニットからGizaデバ
イス与えられることを意味する。GizaはこれらのMDB
を使用して、メッセージの転送を制御し、そしてこの転
送の完了の際、MDBの所有権をそれを提示した機能ユ
ニットに戻す。その機能ユニットは、ついでGizaからか
かるMDBを回収する。下記は、これらの提示および回
収走査と関連するライブラリルーチンおよびデータ構造
を表わす。
【0147】MDBを提示、回収するためのライブラリルーチン 以下の節は下記に対するGizaインターフェースについて
簡単に記述する。すなわち、 ○GizaにMDBを提示するためのもの。 ○GizaからMDFを回収するためのもの。
【0148】MDBにGizaを提示するためのライブラリルーチン Gizaは一つのライブラリルーチン、giza submit を有し
ており、そしてこれはto giza リングを経て単一のMD
BまたはMDBのリストをGizaエンジンに提示すること
を可能にする。
【0149】複数機能ユニットが同時点にこの呼びをな
そうとすると、to giza リングはまずロックされる。つ
いで、提示中の機能ユニットがアドレス対応を有する
と、各MDBに対する物理的アドレスが計算され、to g
iza リングがMDBの全非破壊リストを受け取る。Giza
は、MDBを順に、すなわちリストの頂部から底部間で
処理し、ここでvirt next リンクはNullとなる。Gizaエ
ンジンは使用される仮想の次のポインタの間に書き込む
ことができるから、このリストは一次的である。
【0150】GizaからMDBを回収するためのライブラ
リルーチンおよびマクロス Gizaライブラリは応答リングをチェックしMDBを回収
するための多数のルーチンを有する。すなわち、
【表11】○giza drain response ring ○giza drain reject list ○giza prep scan ○giza drain array ○giza drain test
【0151】giza drain response ringライブラリルー
チンは、MDBの指示された応答リングを空にし、それ
らの各々に対しコールバックエントリを呼ぶ。
【0152】Giza drain reject listは、それがgiza s
ubmit が拒絶するMDBを回収することを除き、giza d
rain response ringと同様である。何故ならば、これら
は重要なフォーマットだからである。
【0153】Giza prep scanライブラリルーチンは、周
期的に呼ばれ、アクティブ応答リングに対してポインタ
配列を更新する。ついで、その配列は、giza drain arr
ayマクロを使用して走査して、任意のMDBを放出で
き、あるいはgiza drain test マクロを使用して走査し
て、応答レスポンスリングが任意の未解決のMDBを有
するか否かを試験できる。
【0154】ライブラリルーチン呼びシーケンス 下記の節は、Gizaメッセージ供給に対するライブラリル
ーチンを記述するものである。ルーチンはアルファベッ
ト順にリストしてある。
【0155】short giza prep scan(long rnum, sys gi
za command ring control **rrcpp) 記述 giza prep scan() ライブラリルーチンは、周期的に呼
ばれ、アクティブな応答リングに対するポインタ配列を
更新する。この配列は、ついで、giza drain arrayまた
はgiza drain test macrosを使用して走査できる。rnum
はリング番号である。 rrcpp は、giza prep scan()
により充填されるべきリングポインタ配列である。機能
復帰は、配列rrcpp に見出され装入されているリングの
番号である。
【0156】void giza drain reject list(void)記述 giza drain reject list()ライブラリルーチンは、giza
submit が拒絶するMDBを回収する。それらは適正に
ホーマットされていないからである。ホスト側では、こ
れは、未解決の復帰をチェックするため種々の場所、す
なわちスケジューラ、割り込みルーチン、Qrun等から呼
ばれる。
【0157】void giza drain response ring(sys giza
response ring control *ringp);記述 giza drain response ring()ライブラリルーチンは、M
DBの指示された応答リングを空にし、それらの各々に
対するコールバックエントリを呼ぶ。普通、これはgiza
drain array macroからのみ呼ばれる。
【0158】コメント 設計により、Giza応答リングは「ロック」される、すな
わちマルチプルCPUシステムにおいては、もし一つの
CPUがロックされたリングからMDBを除去すること
を開始すると、CPUは、リングが空になるまで全MD
Bを除去する。これは、MDBの逐次の除去およびコー
ルバックの逐次の処理を保証する。
【0159】もしもMDB処理の順序が重要でなければ
(例えば、コールバックがMDBを山に戻すに過ぎなけ
れば)応答リングはフラグunlocked callback==1を有し
てよい。この選択の場合、リング上のロックはコールバ
ック中解放され、複数機能ユニットにより同時にアンロ
ーディングすることを可能にする。このオプションは、
メッセージ順序が重要でない場合コールバックのために
使用される。
【0160】void giza submit /sys mdb header *mdb
p);記述 giza submit() ライブラリルーチンは、MDBを命令(t
o giza) リングに提示する。この呼びをなしつつあるよ
うな複数の機能ユニットがあると、命令(to giza) リン
グがまずロックされる。ついで、提示中の機能ユニット
がアドレス対応を有すると、各MDBに対する物理的ア
ドレスが計算される。第1のMDBはto giza リング上
におかれ、後続のMDBは1時に一つずつそのリングに
追加される。
【0161】コメント MDBのリストをgiza submit に提示するためには、M
DBは、それらを所与のMDBの仮想の次のポインタ(m
dbp->virt next link)に渡すことによって提示される。
MDBは順に、すなわちリストの頂部(mdbp)から底部に
向かって処理され、そしてここでvirt next linkはNULL
となる。このリストは、一次的と仮定されるべきであ
る。Gizaエンジンは、使用される仮想の次のポインタの
間に書き込んでも書き込まなくてもよい。
【0162】ホストデバイスおよび周辺デバイス(IOA)
の両者は、MDBをgiza submit を経てGizaに提示す
る。
【0163】命令リング 各Gizaエンジンに対して一つのto giza リングがある。
to giza リングは、機能ユニットがGizaエンジンに渡す
MDBを保持する。Gizaエンジンは、MDBヲ受け取る
順序で処理する。
【0164】MDBがGizaにより受け取られるとき、コ
ントローラは、MDBを同じ整数のチャンネル番号と整
合させようとする。下記の論述は、図2の仮想チャンネ
ル要素に関係する。
【0165】Gizaチャンネル番号 例示の実施例において、Gizaチャンネル番号は32ビット
整数である。高次の8ビットは、使用されるGizaエンジ
ン(すなわちIOPバックパネルスロット)を特定して
いる。残りの24ビットは、接続管理装置により割り当
てられるGizaテーブルインデックスであり、そしてこれ
はGiza整合テーブルへの書込みアクセスできる。現在、
接続管理装置は、Gizaエンジンを実施するコントローラ
盤(例えばIOP) 上でランする。
【0166】各Gizaエンジン上の低番号チャンネルは、
予め割り当てられた機能のために保留ないし予約され
る。例示の実施例において、IOPに対して8チャンネ
ル(0....7)が保留され、各JOAに対して8チャンネル
(8----119、IOPごとに14のIOAがあるから)が
保留される。 予め定義されたIOAおよびIOPチャンネル
【0167】表12は、例示の実施例におけるこれらの
あらかじめ定義されたチャンネルの利用状態をまとめた
ものである。
【表12】 予め定義されたIOAおよびIOPチャンネルの概要 チャンネル IOA 側上の IOP 側上の 目的番号 方向 方向 0 IOA へ IOP へ システムレベル通信 1 IOA から IOP から 2 IOA へ IOP へ IOA およびIOP のPROM存在デバッガ 3 IOA から IOP から を保留ないし予約 4 IOA へ IOP へ Giza接続管理装置 5 IOA から IOP から 6 IOA へ IOP へ ドライバ特定メッセージ 7 IOA から IOP から (逆転されるが、IOP 側で定義され ない。)
【0168】IOPのイニシャライズでこれらの予め定
義されたチャンネルが解放され、解放状態に維持され
る。すべての予め定められたチャンネルは、単一のブロ
ックチャンネルを搬送し、各チャンネル作用するコード
がメッセージの最大ブロック寸法を定める。
【0169】システムレベルチャンネル(0および1) システムレベルチャンネル(0および1)上のメッセー
ジプロトコルは、なお定義されているべきである。目的
は、おそらく単にシステムエラーメッセージを送って、
これらのチャンネルをシステムとの通信状態におくこと
である。
【0170】デバッガチャンネル(2および3) チャンネル2および3は、IOAおよびIOPPROM
に存するデバッガに対する標準の一組のデバッガプリミ
ティブに対して予約される。これらのでバッガは下記の
事項をなすように設計される。 ○ブレークポイントをセットおよびクリヤ ○IOAメモリを読み取り/書き込み。 ○ブレーク時点にレジスタを読み取り/書き込み。 ○コードを通って一段進む。 ○ブレークポイントから継続。 ○マッピングレジスタを読み取り/書き込み。
【0171】接続管理装置チャンネル(4および5) チャンネル4および5は、次のチャンネル制御動作のた
めに使用される。 ○チャンネル解放 ○チャンネル閉鎖 ○チャンネルフラッシング ○チャンネル再開 ○チャンネル切断
【0172】IOAドライバ特定チャンネル(6および7) 例示の実施例において、IOA側において、チャンネル
6および7はドライバ特定チャンネルであり、これは下
記の任意のものに使用できる。 ○ファームウェア構造 ○統計値収集 ○新チャンネル番号を通信 ○チャンネルクリーンアップ ○優先メッセージ
【0173】IOPチャンネル6および7 IOP側において、チャンネル6および7は保守および
診断(MおよびD)チャンネルである。
【0174】追加のIOAチャンネルの創成 I/O ドライバは、これらの予め定義されたチャンネルの
みを使用することに限定されない。すなわち、任意数の
追加の単一方向チャンネルを各IOAに対して創成でき
る。ドライバコードを書き込む開発者は、これらの追加
のチャンネルについて必要とされる機能可能性を決定す
る。例えば、開発者は、これはIOAに接続される各物
理的ラインに対してチャンネル対が創成されることを必
要とするIOAドライバを書き込むかもしれない。他の
ものは、単一チャンネルつい、および多重ラインに対す
る多重メッセージを選択するかもしれない。また、他の
ものは、IOAにアクセスする各VOSポートまたはF
TX流に対して一つのチャンネル対を創成するかもしれ
ない。
【0175】Gizaチャンネルは、数種の異なる状態の一
つにあり得る。下記のライブラリルーチンおよび手続き
は、図2の仮想チャンネル要素および図10の状態線図
に関係する。
【0176】チャンネル操作のためのインターフェース 以下の説明は、Gizaチャンネルの操作方法について記述
するものである。節の前半は、チャンネル操作の梗概を
一般的に示し、後半は、関係するライブラリルーチンに
ついて詳細に論述するものである。
【0177】Gizaチャンネルは番号が付されており、整
数チャンネル番号は特定のGizaエンジンにのみ適用され
る。すなわち、システムには特定のGizaエンジン形式の
1以上の盤があり得るから、各Gizaエンジンはそれ自体
のリング記述子を有する。前チャンネルIDは32ビッ
ト整数である。高次の8ビットは、使用されているGiza
エンジン(すなわちIOPバックパネルスロット)を特
定する。残りの24ビットは、接続管理装置により割り
当てられるGizaテーブルインデックスである。これはGi
za整合テーブルに書込みアクセスし得る。ここでは、接
続管理装置は、Gizaエンジンを実施するコントローラ盤
(例えばIOP)上でランする。
【0178】チャンネル操作の梗概 以下の分節は、チャンネル操作(すなわち、チャンネル
の創成、フラッシング、再開および閉鎖)についての梗
概である。図10は、発呼側(すなわち送信側)からGi
zaチャンネルの状態を示す図である。
【0179】本発明の例示に実施例において、Gizaチャ
ンネルは4状態、すなわち閉鎖、開放、フラッシングま
たは半閉鎖の一つの状態にあり得る。
【0180】チャンネルの創成 Giza転送を実施する各機能ユニットは、giza connect()
ライブラリルーチンを使用して新しいGizaチャンネルを
創成する潜在性を有する。
【0181】発呼装置(普通システム内のデバイスドラ
イバ)は下記のものを特定する。 〇所望されるチャンネルの方向 〇チャンネルの他端における機能ユニット 〇雑多な形態情報。 ライブラリルーチンは整数チャンネル番号を戻す。
【0182】チャンネルのフラッシング チャンネルをフラッシングするプロセスは、掲示された
が処理されなかったMDBを回収する。Gizaチャンネル
の各側にあるドライバは、チャンネルのその側のフラッ
シングを強制し得る。これは、使用者のI/O 打切り(ア
ボート)要求の結果としてあるいはチャンネルを閉鎖す
る準備として起こり得る。チャンネルをフラッシングす
るためには、giza flush()ライブラリルーチンが使用さ
れる。このルーチンは、要求を接続管理装置に送り、そ
してこの装置がチャンネルをフラッシングとしてマーク
し、そのチャンネルに対してGizaエンジンにおいて現在
待ち行列化されているMDBを戻す。戻されたMDBは
エラービットでマークされる(フラッシュング)。
【0183】チャンネルが完全にフラッシングされるこ
とを保証するために、要求装置は、MDBの計数値を維
持するか、「トレーサビュレットMDB」をチャンネル
に沿って送る。トレーサは、チャンネルが完全にフラッ
シングされたときに戻る。何故ならば、MDBは、それ
らが通常のデータ伝送、エラーまたはフラッシングによ
り完了されるにせよ、それらが提示されたのと同じ順序
で戻されるからである。
【0184】チャンネル使用の再開 ドライバが、チャンネルを閉鎖するか、ある未解決の動
作を単に打ち切ることを意図してチャンネルをフラッシ
ングする。チャンネルが閉鎖されるべきでないと、チャ
ンネルは、それが再度使用できる前に、動作を再開する
ようになされねばならない。そうでないと、すべての後
続のMDBは、「フラッシュド」とマークされて戻され
る。Giza resume() ライブラリ機能は、接続管理装置に
メッセージを送り、そしてこの装置が、そのチャンネル
のもはやフラシングしていない側をマークする。
【0185】チャンネルの閉鎖 ドライバがチャンネルを閉鎖することを決定する場合、
二つの方法がある。すなわち、 〇通常の規則正しい方法 〇由々しいエラー条件が存在する状況において
【0186】この分節は、通常の規則正しい方法を記述
し、以下の分節で、由々しいエラー条件に遭遇したチャ
ンネルの切断について論述する。
【0187】チャンネルの通常の閉鎖においては、ドラ
イバは、その対の機能ユニットに、意図されるチャンネ
ルを閉鎖すべきことを報知する。そのとき、各機能ユニ
ットはそのチャンネルをフラッシングする。フラッシン
グ遂行されると、各サイドは、チャンネルを閉鎖するた
めgiza close()ライブラリルーチンを呼ぶ。これによ
り、接続管理装置にメッセージが送られ、問題のチャン
ネルの発呼側を閉鎖する。そのチャンネルは、その側上
のみ「閉鎖」とマークされる。チャンネルが両側上にお
いて「閉鎖」とマークされると、チャンネルは、再使用
のためチャンネルの自由プールに戻される。
【0188】チャンネルの切断 あるドライバに対する対の機能ユニットが死ぬまたは消
滅されるべき場合(ドライバが関係する限りにおい
て)、そのドライバは、giza disconnect() ライブラリ
ルーチンを使用することによりチャンネルを閉鎖せしめ
ることができる。このルーチンは、接続管理装置にメッ
セージを送り、チャンネルの両側が直ちに閉鎖されるべ
きことを要求する。要求中の機能ユニットは、チャンネ
ルのその側を先ずフラッシングすべきであるが、それは
必要ではない。
【0189】チャネル操作ライブラリルーチンの概要 表13はGizaチャンネルを操作するのに使用される標準
セットライブラリルーチンを簡単に叙述する。
【0190】
【表13】
【0191】基本的チャンネル操作ライブラリルーチン
のためのパラメータ 基本的チャンネル操作ライブラリルーチンの全てが、gi
za connectが以下の入力から提供するところのチャンネ
ル番号識別子(channel number)を受け取る。
【0192】
【表14】 ──────────────────────────────────── 〇 c device id 〇 transfer type 〇 number of blocks ────────────────────────────────────
【0193】c device id は以下に示すように、IOP の
スロット番号とIOA のスロット番号とを具備する構造で
ある。
【0194】
【表15】 ──────────────────────────────────── typedef structure { char slot level; /*IOP slot */ char device level; /*IOA slot */ char pad[6]; } c device id; ────────────────────────────────────
【0195】接続の時間の間中、永続的ないし不変であ
るtransfer type パラメータは生成されるチャンネルの
タイプを叙述する。それは以下のタイプのうちの一つが
可能である。
【0196】
【表16】 ──────────────────────────────────── # define SEND 0 # define RECEIVE 1 ────────────────────────────────────
【0197】ブロックパラメータの番号は、整合テーブ
ルのチャンネル定義部に記録されそして図示の実施例に
おいて、そのチャンネルのために受け入れられるMDB を
限定するのに使用される(すなわち、それらはチャンネ
ルが解放されたとき指示されたブロックの番号を正確に
有さなければならない)。
【0198】channel numberパラメータに加えて、チャ
ンネル上でのフラッシュ動作、閉鎖動作、再開動作の際
に、write bit パラメータの設定が、チャンネルの書込
み側( 非ゼロ)または読取り側(0)のいずれが影響さ
れるかどうかを指示する。giza connectライブラリルー
チンもgiza disconnect ライブラリルーチンのいずれも
write bit パラメータを使用しない。
【0199】NAL ライブラリルーチン チャンネル操作のためのライブラリルーチンはそれぞれ
何らのメモリ割当てもない代替えルーチンを有する。こ
れら代替えライブラリルーチンを以下に示す。
【0200】
【表17】 ──────────────────────────────────── ○ giza close nal ○ giza connect nal ○ giza disconnect nal ○ giza flush nal ○ giza resume nal ────────────────────────────────────
【0201】図示の実施例において、これらのルーチン
は以下の理由のために使用可能である。
【0202】もしメモリ限界があればその理由(消尽さ
れた自由記憶域を有するシステム)もし発呼側が中断不
可能であればその理由(付属せられる何らのプロセスも
有さない、たとえば、Gizaコールバックにおいてストリ
ームモジュールの中断レベルにある場合など)
【0203】パラメータ:giza接続msg および他のrpc msg 基本的チャンネル操作ライブラリルーチンを使用すると
いうパラメータに加ええて、NAL ルーチンは2つのMDB
をコネクション管理部チャンネルへ報知する。一つは所
定のリクエスト(すなわち、接続、閉路、フラッシュ、
再開、または切断すること)を送るためのものであり、
一つはリクエストが成功裡に完了されたという応答を受
け取る(またはもし不成功であればエラーを受け取る)
ためのものである。giza connect nalライブラリルーチ
ンは以下に示されるgiza connect msgを使用する。
【0204】
【表18】 ──────────────────────────────────── /*GIZA connection Manager message structures─ with their MDBs*/ ( GIZA接続管理部メッセージ構造(それらのMDB を付帯) typedef struct LONGMAP unsigned char command; /* the command to which this is response */(これがそれに対する 応答であるところのコマ ンド) unsigned char sequence number; /* the sequence number used */ (使用されるシ ーケンス番号) unsigned short status; /* 0=good status; else VOS error code */ (0 は良好なステータスであ り、それ以外はVOS エラ ーコード) long chan number /* the answer, if this is a connect */ (返答 、もしこれが接続であれ ば) }conman response; typedef struct LONGMAP unsigned char command; /* connection manager command = CONNECT */(接続管理部 コマンド=接続) unsigned char sequence number; /* echoed in the respo nse; not checked*/(応 答におけるエコー;チェ ックされず) unsigned char padb; unsigned char target slot; /* the slot at the oth er end of channel*/ ( チャンネルの他方の端部 のスロット) unsigned char transfer type; /* kind of transfer(1 of 6*/(転送の種類、6 つのうちの一つ) unsigned char number of blocks; /* #blocks in MDBs on the new channel*/ (新 規チャンネルのMDB のブ ロック) unsigned char padw; }connect request; typedef struct LONGMAP } unsigned char command; /* Connection Manager command */(接続管理部 コマンド) unsigned char sequence number; /* echoed in the respo nse; not checked*/(応 答におけるエコー;チェ ックされず) unsigned char side; /* =0 means read; not used in disconnect*/ (0 は読取りを意味し、 不接続では使用されない ) unsigned char pad; long chan number /* GIZA channel number */ ( GIZA のチャンネ ル番号) }other request; typedef struct $longmap sys mdb 11 rsp mdb ; /*MDB for the response from a connec tion*/(接続からの応答のためのMDB) conman response cmd resp ; /* the response message*/ (応答メッ セージ) sys mdb 11 cmd mdb ; /*MDB for the connection request*/( 接続リクエストのためのMDB) connect request con request ; /*the connection request message*/( 接続リクエストメッセージ) long pid ; /*the process ID of the suspended ca ller */ (保留された発呼側のプロセス ID) unsigned long iop slot ; /*the slot # field to be merged */( マージ(併合)されるスロット番号フィ ールド) /*cmd resp's chan number*/ /*by the callback from giza connect nal*/ ( giza connect nalからのコールバックによる) }giza connect msg; /* the reply is first in the giza connect msg structure because the wh ole structure is returned to free storage when the reply comes back and at that time, we're given a pointer to resp mdb */(応答は最初giza conne ct msg構造にある。なぜなら、応答が戻ってくるとき構造全体は自由記憶域に戻 され、そしてそのとき我々はresp mdbへのポインタが与えられるからである) ────────────────────────────────────
【0205】チャンネルをフラッシュし、再開し、閉鎖
しまたは切離すための残余のルーチンは、以下のother
rpc msg を使用する。
【0206】
【表19】 ──────────────────────────────────── /* The following messages have replies, but a different structure from giza connect msg for the request*/(以下のメッセージは応答を有する。しか し、リクエストについてgiza connect msgからは異なる構造) typedef struct { sys mdb 11 rsp mdb ; conman response cmd resp ; sys mdb 11 cmd mdb ; /* MDB */ (MDB) other request other request ; /* message */ (メッセージ) long pid ; /* the process ID of the suspended c aller */(保留された発呼側のプロセス ID) } other rpc msg ; /* disconnect, close, flush, resume */(切離し、 閉鎖、 フラッシュ、再開) ────────────────────────────────────
【0207】NAL ルーチンのためエラーコードを抽出するマクロ 2つのマクロが、giza connect msgまたはother rpc ms
g と一緒に送られる接続管理部メッセージのペアからの
VOS エラーコード抽出に使用される。これらのマクロは
以下に示すCONMAN ERRおよびNEW CHANである。
【0208】
【表20】 ──────────────────────────────────── /* CONMAN ERR works for both giza connect msg and pther rpc msg becaus e they start the same and this macro references only fields in the first three substructures. CONMAN ERR extracts a VOS error code from the retu rned connection manager message pair.*/ ( CONMAN ERR は giza connect ms g および pther rpc msgについて働く。なぜなら、それらは同じことを始めそし てこのマクロは最初の3つの副構造のフィールドだけを参照するからである。CO NMAN ERRはVOS エラーをコードを戻される接続管理部メッセージのペアから抽出 する) ────────────────────────────────────
【0209】
【表21】 ──────────────────────────────────── #define CONMAN ERR(mdbp) (\ ((((mdbp) - >cmd mdb.hdr.message status) ! =0)\ ||((((mdbp) - >rsp mdb.hdr.message status) ! =0))?\ (e$giza connect failed) : \ ((((mdbp) - >cmd resp.status)) /*NEW CHAN builds a channel number from the reply to be found in the ret urn MDB. If there was an error, an illegal channel number is created. */ (NEW CHANが戻りMDB に見出される返答からchannel numberを構築する。もしエ ラーがあったならば、イリーガルチャンネル番号が生成される) 。 #define NEW CHAN(mdbp) ((channel number)\ ((((mdbp) - >cmd mdb.hdr.message status) ! =0)\ ||((((mdbp) - >rsp mdb.hdr.message status) ! =0)\ ||((((mdbp) - >con request.command) ! = (mdbp) - >cmd resp.command))\ ||((((mdbp) - >con request.sequence number) \ ! ((mdbp) - >cmd resp.sequence number))\ ||((((mdbp) - >cmd resp.status) ! =0))? (0x7fffffff) : \ ((mdbp) - >iop slot \ |(mdbp) - >cmd resp.chan number)) ────────────────────────────────────
【0210】仮想チャンネル要素のチャンネルは図10
に示されるように種々のステータスで存在することがで
きる。以下は、これら種々の状態がそれによりnal 形式
において影響せられ得るところの態様に関係する。
【0211】giza close nal( )発呼シーケンス
【表22】 ──────────────────────────────────── short giza close nal(channel number *sc、 short *write bit、 other rpc msg *mdbp、 void (*callback)(sys mdb header *) ) ; ────────────────────────────────────
【0212】記 述 giza close nal( ) のコールはgiza close( ) ライブラ
リールーチンと同様、チャンネルを閉じる。発呼側はも
はやMDBを所定のチャンネルに呈示しないことを約束
する。両方の側が、指示チャンネルが閉じたことを宣言
するときだけ、それは本当にチャンネルの自由プールに
戻される。
【0213】入力パラメータ
【表23】
【0214】発呼シーケンス
【表24】 ──────────────────────────────────── short giza connect nal( c device id*d idp、 short *transfer type、 short *number of blocks、giza connect msg *mdpb、 void (*callback)(sys mdb header *) ); ────────────────────────────────────
【0215】記 述 giza connect nal( ) ライブラリルーチンは接続管理部
にd idp により指示されるごとく新規なチャンネル(Gi
zaエンジンの新規な整合テーブルエントリ)割り付けそ
してこれを初期化することをリクエストする。このルー
チンの使用者ががNEW CHAN(mdpb)マクロを使用し、結果
を、コールバックでgiza connect msgから戻される。
【0216】入力パラメータ
【表25】 ──────────────────────────────────── c device id 以下に示されるごとくIOP スロット番号およびIO A スロット番号からなる構造 typedef structure { char slot level; /*IOP slot */ char device level; /*IOA slot */ char pad[6]; } c device id; transfer type 接続の間、永続的であり、それは生成されるチャ ンネルのタイプを叙述する。それは以下のタイプの うちの一つとすることができる。 # define SEND 0 # define RECEIVE 1 number of blocks チャンネルを定義しそしてこれを限定する。 giza connect msg 2つのMDBを包含する。一つはメッセージを送 り接続管理部を通じチャンネルを接続し、一つは接 続が成功したことの肯定応答またはエラーメッセー ジのいずれかと一緒にメッセージを戻り受信する。 callback 接続管理部がこのリクエストを完了したときに呼 び出されるC機能のアドレス。 giza disconnect nal( ) ────────────────────────────────────
【0217】発呼シーケンス
【表26】 ──────────────────────────────────── short giza disconnect nal( c device number *sc、 other rpc msg *mdbp、 void (*callback)(sys mdb header*) ); ────────────────────────────────────
【0218】記 述 giza disconnect nal( )ライブラリルーチンは(たとえ
ば、IOA が消滅するときなどの)緊急使用のためだけで
ある。それはホストまたはIOA側のいずれかから発行
できる。しかし、発行されるとき、channel numberパラ
メータにより識別されるチャンネルを強制し、同時に両
方の側をフラッシュしそして閉じる。
【0219】入力パラメータ
【表27】
【0220】発呼シーケンス
【表28】 ──────────────────────────────────── short giza flush nal( channel number *sc、 short *write bit、 other rpc msg *mdbp、void (*callback)(sys mdb header *)); ────────────────────────────────────
【0221】記 述 giza flush nal( ) ライブラリルーチンはgiza flus
h()ライブラリコードへの代替え機構である。I/O
アボートの部分として使用されるかまたはチャンネルを
閉じるのに備え、それはチャンネルをフラッシュし、発
呼側のいずれのペンディングMDB をも発呼側へ戻される
よう強制する。すべてのMDB がそれらが呈示された順序
で戻る。もしチャンネルがフラッシュできなければ、sy
serrメッセージが発生されそして記録される。
【0222】入力パラメータ
【表29】
【0223】フォーマット化
【表30】 ──────────────────────────────────── short giza resume nal( channel number *sc、 short *write bit、 other rpc msg *mdbp、void (*callback)(sys mdb header *) ); ────────────────────────────────────
【0224】記 述 giza resume nal( )ライブラリルーチンはgiza resume
()への代替え機構であり、チャンネルを動作へと戻
す。
【0225】チャンネルはそれを閉じる(または切離
す)前に一般にフラッシュされる。ところで、チャンネ
ルの使用もまた一時的に中断され、たとえばI/Oアボ
ートなどの部分として報知MDBをフラッシュおよび検
索する。ひとたび報知MDBが検索されると、ドライバ
は、giza resume( )ライブラリルーチンを呼び出すこと
により依然として解放しているチャンネルを使用し再開
できる。
【0226】入力パラメータ
【表31】
【0227】発呼シーケンス
【表32】 ──────────────────────────────────── short giza close( channel number *sc、 short *write bit ); ────────────────────────────────────
【0228】記 述 giza close( ) コールはチャンネルを閉じるための標準
機構である。このコールで、発呼側はもはやMDBを所
定チャンネルに送信しないことを約束する。両方が指定
チャンネルが閉じたことを宣言するときだけ、それは本
当にチャンネルの自由プールへ戻される。
【0229】入力パラメータ
【表33】
【0230】発呼シーケンス
【表34】 ──────────────────────────────────── short giza close( c device id *d idp、 short *transfer type、 short *number of blocks、 channel number *sc ); ────────────────────────────────────
【0231】記 述 giza connect ( )ライブラリルーチンは新規なチャンネ
ル(Gizaエンジンの新規な整合テーブルエントリ)を割
り付けそしてこれを初期化する。
【0232】入力パラメータ
【表35】 device id 以下に示されるごとくIOP スロット番
号およびIO A スロット番号からなる構造 typedef structure { char slot level; /*IOP slot */ char device level; /*IOA slot */ char pad[6]; } device id; transfer type 接続の間、永続的であり、それは生成されるチャ ンネルのタイプを叙述する。それは以下のタイプの うちの一つとすることができる。 # define SEND 0 # define RECEIVE 1 number of blocks チャンネルを定義しそしてこれを限定する。 ────────────────────────────────────
【0233】出力パラメータ
【表36】
【0234】発呼シーケンス
【表37】 short giza disconnect( channel numbe
r *sc ); ────────────────────────────────────
【0235】記 述 giza disconnect ( ) ライブラリルーチンは(たとえ
ば、IOAが消滅したときなど)緊急使用のためだけで
ある。それはホストまたはIOA側のいずれかから発行
できる。しかし、発行されるとき、channel numberパラ
メータにより識別されるチャンネルを両側で同時にフラ
ッシュしそして閉じるよう強制する。
【0236】入力パラメータ
【表38】
【0237】発呼シーケンス
【表39】 ──────────────────────────────────── short giza flush( channel number *sc、 short *write bit ); ────────────────────────────────────
【0238】記 述 giza flush ( )ライブラリルーチンは、I/Oアボート
の部分としてまたはチャンネルを閉じる準備をするのに
使用される。それはチャンネルをフラッシュし、発呼側
のいずれのペンディングMDBも呼側へ戻されるよう
強制する。全てのMDBはそれらが呈示された順序で戻
る。もしチャンネルがフラッシュできなければ、システ
ムエラーが発生されそして記録される。
【0239】入力パラメータ
【表40】
【0240】発呼シーケンス
【表41】 ──────────────────────────────────── short giza resume( channel number *sc、 short *write bit、 ); ────────────────────────────────────
【0241】記 述 チャンネルはそれを閉じる(または切離す)前に一般に
フラッシュされる。ところで、チャンネルの使用もまた
一時的に中断され、たとえばI/Oアボートなどの部分
として報知MDBをフラッシュおよび検索する。ひとた
び報知MDBが検索されると、ドライバは、giza resum
e( )ライブラリルーチンを呼び出すことにより依然とし
て解放されているチャンネルを使用し再開できる。
【0242】入力パラメータ
【表42】
【0243】応答リング GIZAはMDB をそれらの対応する装置へ戻す。MDB はソフ
トウエアリング(応答リング)を介して戻される。以下
は図2に図示されるごとく戻りFIFO要素に関係する。
【0244】応答(from giza)リングは、Gizaエンジン
から核(カーネル)またはIOA ファームウエアへ戻るMD
B ポインタのため一時的にFIFOを保持する。あらゆるホ
ストおよびIOA がそれに関連付けられる少くともfrom g
iza リングを有する。ところで、コード設計の際の融通
性を提供するために、たいていの機能ユニットが、そこ
から選択するところの2つ以上の応答リングを有する。
これは種々のMDBの種別に適合する。たとえば、ある
応用ができるだけ最小限の待ち時間でMDBを要求しそ
して(たとえばイーサネットパケットのACK など)の中
断レベルでそれらを取扱うのを選択するかもしれない。
代替え例として、ある応用が待ち時間ではなくCPUの
使用をできるだけ最小限にし、それゆえ、(たとえばポ
ーリングループなどから)バックグラウンドでMDBコ
ールバックを処理したいかも知れない。
【0245】多重プロセッサ機能ユニットでは、もしコ
ールバックがリング上で発生するのと同じ順序で完了さ
れることを保証したいと欲するのであれば、これらコー
ルバックを行っている間、リングを一つのプロセッサに
ロックすることが必要である。このロック動作はコール
バックプロセッシングを一度に一つのCPUへ限定す
る。それゆえ、ロックされないリングを有することは一
つのオプションであり、多数のCPUがコールバックを
同時に処理するのを許容する。これらは順序が重要でな
いところのMDBについてだけ使用される。デフォルト
により、順序が重要であると仮定されそれゆえロックさ
れるリングは正規のケースであると仮定される。
【0246】この目的のために、以下の議論はGizaリン
グと関連付けられる2つのカテゴリの属性、一方の属性
はMDB が空き応答リングに置かれるときに中断が発生さ
れるかどうかを決定しそして他方は応答リングがロック
されるかどうかを決定する。
【0247】表43はこれらのオプションを例示するた
めに選択される一組のリングを示す。現在計画されてい
るごとく、いずれのシステムでも使用されるようになる
ここに定義されるリングよりも多くのリングがある。
【表43】
【0248】中断および非中断リング 一般に、Giza応答リングは以下のタイプのうちの一つで
ある。 1)MDBがそこにおかれたときに機能ユニットで中断
を生ずるようフラッグ処理される中断リング(それは以
前に空き状態であったと仮定する) 2)機能ユニットが(たとえばメインループ、スケジュ
ーラコード、カーネル出口で)頻繁にポールするところ
のポールリング 3)標準的にはポールされないが、特別の状況でポール
され得るカスタムポールリング。カスタムポールリング
がテストプログラムのためだけにまたはCPUのPRO
Mによりそしてシステム停止の状況でデバッガにおいて
使用され得る。
【0249】ロックおよびロックされないリング Gizaリングの他の属性はそれらがロックされるかどうか
を決定する。ロックリングは複数CPUがそれに同時に
サービスを提供するのを許容しない。これはデフォルト
であり、そしてメッセージの順序が重要でありそして複
数のCPUが同時に同様のリングにサービスを提供しよ
うとするかもしれないときに要求される。ロックされな
いリングは、MDBの順序が重要でないとき、たとえ
ば、あるMDBがそれを自由リングへ戻す以外なにもし
ないときだけ使用されるのが好ましい。
【0250】エラー状態 Gizaが機能ユニット間にブロックを賦与する。Gizaエラ
ーはI/Oエラーにではなくブロック供給に関係する。
I/Oエラーがデバイスアダプタからもとのドライバへ
と正規Gizaメッセージを通じて報告される。Gizaエラー
は以下のものを含む。 1)チェックサムエラー 2)宛て先機能ユニットの消滅(death) 3)ブロックのオーバラン 4)不存在メモリアドレス 5)不存在Gizaチャンネル 6)ページの境界を横切る試み
【0251】転送エラーが標準的なGizaチャンネルで生
ずるとき、メッセージは供給されず、そしてドライバ書
込み部がいずれのペンディングMDBをどのように取扱
うかを決定する必要がある。転送の相手方が両方とも等
しくエラー報告を受ける。
【0252】GIZAエンジンまたは機能ユニットの消滅 GiZAを使用する機能ユニット消滅すれば、パートナーの
機能ユニットのドライバコードは使用されているいずれ
のチャンネルをも切離すことにより消去されねばならな
い。消滅の検出は、もし転送が企図されていたならばGI
ZAエラーを通じて生じそしてGIZAエンジンはもはや機能
ユニットが存在しないことを発見する。代わりに、通信
機能ユニットが周期的に「私は存在している、あなたは
どう?」というコントロールメッセージを互いに送信
し、妥当な時間長さ(数秒から数分)におけるかかるメ
ッセージのないことにより検出されることが推奨され
る。
【0253】もし、GIZAエンジンが消滅すれば、チャン
ネルは自動的に閉じられる。なぜなら、それらはGIZAエ
ンジンに属するからである。GIZAエンジンの消滅を検出
するM&Dプロセスはライブラリルーチンremove giza
ring db を呼び出し、GIZAエンジンのGIZAリングを除去
した後GIZAエンジンにより所有される全てのMDBを戻
す。これらが戻される間何らのMDBも呈示できない。
【0254】管理ライブラリルーチン ソフトウエアリングの生成および破壊の過程はGIZAの機
能にとって重要である。結果的に、リングを初期化およ
び発生するコードが存在しなければならない。それゆ
え、以下はソフトウエアリングの発生および破壊に関係
する。この欄は、Gizaリングを初期化および除去するの
に使用される以下のライブラリルーチンを叙述する。 ■ init giza ring db ■ remove giza ring db remove giza ring db(short *iop slot、 short *simple
xed)
【0255】このinit giza ring db ライブラリルーチ
ンはスロットiop slotでGIZAエンジンのための一組のリ
ングを割当ておよび初期化する。それはポインタをリン
グディスクリプタデータ構造へ戻す。「シンプレックス
化」されるパラメータは、もし初期化されるGIZAエンジ
ンが(デュプレックス化されるペアであること(これは
Stratus のハードウエアのために設計されている)また
は単独ランするデュプレックス化ペアの半分であること
と対照的に)内在的にシンプレックス化されるのであれ
ば、非ゼロとすべきである。 sys giza db *init giza ring db( short *iop slot、 s
hort *simplexed )
【0256】記 述 ホスト側はinit giza ring db ライブラリルーチンを使
用し、iop slotのIOPのためにGIZAリングを初期化す
る。それはポインタをリングディスクリプタへ戻す。シ
ンプレックス化されるパラメータは、もし初期化される
IOP が(それがデュプレックス化ペアの部分であること
が企図されるとき単独でランするのと対照的に)内在的
にシンプレックス化されるのであれば、非ゼロへ戻るべ
きである。
【0257】要 約 ディジタルデータプロセッシング機能ユニット間で情報
を転送するための新規なシステム(方法および装置の両
方)について説明した。システムは、幅広く、2つの機
能ユニット(たとえば、ホストプロセッシング部および
周辺装置)およびそれらの間で情報を転送するためのコ
ントローラを有するディジタルデータ処理装置を含む。
第1の機能ユニットが、データがそこから転送されると
ころの関連の局部メモリ中の一つまたはそれ以上のアド
レスを指示する送信メッセージディスクリプタブロック
(MDB)信号を発生する。第2の機能ユニットが、デ
ータがそこへ転送されるところのその関連の局部メモリ
中の一つまたはそれ以上の場所を指示する受信メッセー
ジディスクリプタブロック(MDB)信号を発生する。
コントローラは、送信および受信MDB信号、特に同じ
ものを指示するもの、を整合する。
【0258】図示のシステムはディジタルデータプロセ
ッシング機能ユニット間の情報の改善された転送を提供
する。それは、たとえば周辺装置などの機能ユニットへ
のデータの迅速な転送を助長しそして付随するソフトウ
エアおよびハードウエア機構の複雑さをできるだけ最小
限にする改善された入力/出力制御を提供するのに使用
できる。特に、システムはタイミングエラーからの改善
された免疫性を提供する。
【0259】当業者であれば、本発明の技術思想から逸
脱することなく種々の変更及びおよび修正が可能である
ことは明らかであろう。これらの修正および変更は請求
の範囲に記載の本発明の技術思想内に包摂されるべきも
のである。
【図面の簡単な説明】
【図1】本発明の実施との関係で使用される好ましいデ
ィジタルデータ処理装置の模式図である。
【図2】本発明による好ましいデータ転送システムの模
式図である。
【図3】本発明によるシステムの好ましい戻りFIFO
の概念図である。
【図4】本発明による好ましいデータ転送システムの構
造的な概観図である。
【図5】本発明による好ましいデータ転送システムを利
用する遠隔入/出力ドライバの構成で使用するための遠
隔サブルーチンモデルを図示する概念図である。
【図6】本発明による好ましいデータ転送システムを利
用する遠隔入/出力ドライバの構成で使用するための遠
隔サブルーチンモデルを図示する概念図である。
【図7】本発明による好ましいデータ転送システムを利
用する遠隔入/出力ドライバの構成で使用するための遠
隔サブルーチンモデルを図示する概念図である。
【図8】本発明による好ましいデータ転送システムを利
用する遠隔入/出力ドライバの構成で使用するためのパ
イプラインモデルを図示する概念図である。
【図9】本発明による好ましいデータ転送システムで使
用されるあらかじめ定められるチャンネルを図示する模
式図である。
【図10】本発明による好ましいデータ転送システムで
使用されるチャンネルの状態を図示する模式図である。
【手続補正書】
【提出日】平成5年9月10日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】請求項16
【補正方法】変更
【補正内容】
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ランディー・シベル アメリカ合衆国マサチューセッツ州ブラッ クストーン、リンカン・ストリート255 (72)発明者 ウィリアム・ディー・スナッパー アメリカ合衆国マサチューセッツ州ホリス トン、カール・ロード51 (72)発明者 ジョナサン・ウェスト アメリカ合衆国マサチューセッツ州ノース ボロ、チャーチ・ストリート365

Claims (24)

    【特許請求の範囲】
  1. 【請求項1】 少なくとも第1および第2の機能ユニッ
    トを有し、その各々が、アドレス可能な位置にデータを
    記憶するための関連するメモリ手段を備え、該各メモリ
    手段が、読取りモードにおいて、加えられるアドレス信
    号に応答して、かかるアドレス信号により特定される位
    置に記憶されるデータを表わすデータ信号を発生し、書
    込みモードにおいて、加えられるアドレスおよびデータ
    信号に応答して、かかるアドレス信号により特定される
    位置にかかるデータ信号により特定されるデータを記憶
    し、そして前記第1および第2機能ユニットに結合され
    て両者間においてデータを転送するためのコントローラ
    手段を備える形式のディジタルデータ処理装置におい
    て、 A.前記第1機能ユニットが、データが転送送出される
    べき関連するメモリ手段内の1または複数のアドレスを
    特定するMDB送信信号を発生して前記コントローラに
    転送するための送信手段(センダ)を備え、 前記第2機能ユニットが、データが転送されるべき関連
    するメモリ手段内の1または複数のアドレスを特定する
    MDB受信信号を発生して前記コントローラに転送する
    ための送信手段(レシーバ)を備え、 B.前記コントローラ手段が、前記送信手段および受信
    手段に結合されたMDB整合手段であって、前記MDB
    送信信号の少なくとも選択された一つの信号を前記MD
    B受信信号の選択された一つの信号に整合させ、整合中
    のMDB信号により特定される前記第1および第2機能
    ユニットのメモリ手段の対応する位置間においてデータ
    の転送を実行するための信号を発生するMDB整合手段
    を備え、 C.前記コントローラ手段が、前記MDB整合手段およ
    び前記第1および第2機能ユニットのメモリ手段に結合
    されたデータ転送手段であって、前記転送実行信号に応
    答して、 i)前記第1機能ユニットのメモリ手段に、前記MDB送
    信信号内に特定されるアドレスを表わすアドレス信号を
    供給し、そのアドレス信号の供給に応答して該メモリ手
    段からそれにより発生されるデータ信号を受信し、 ii) これらのデータ信号を前記第2機能ユニットのメモ
    リ手段に、前記MDB受信信号に特定されるアドレスを
    表わすアドレス信号とともに供給することを特徴とする
    ディジタルデータ処理装置。
  2. 【請求項2】 前記第1および第2機能ユニットの少な
    くとも一つが、整合の受信中1または複数のMDB信号
    を記憶するためのFIFO命令手段を備える請求項1記載の
    ディジタルデータ処理装置。
  3. 【請求項3】 前記各FIFO命令手段が、MDB信号が、
    それらがそのFIFO命令手段により受信された順序でアク
    セスされ得るように、前記のそれぞれのMDB信号を記
    憶するための手段を備える請求項2記載のディジタルデ
    ータ処理装置。
  4. 【請求項4】 前記MDB整合手段が、前記第1および
    第2機能ユニットにより発生されるMDB信号を複数の
    仮想チャンネルに沿って整合させるための仮想チャンネ
    ル手段を備える請求項1記載のディジタルデータ処理装
    置。
  5. 【請求項5】 A.前記送信手段および前記受信手段の
    各々が、前記整合が起こるべき仮想チャンネルを特定す
    る仮想チャンネル番号を含むように、前記のそれぞれの
    MDB送信信号およびMDB受信信号を発生するための
    手段を備え、 B.前記仮想チャンネル手段が、同様の仮想チャンネル
    番号を有するMDB送信およびMDB受信信号に応答し
    て対応するデータの転送を実行する手段を備える請求項
    4記載のディジタルデータ処理装置。
  6. 【請求項6】 前記仮想チャンネル手段が、次の少なく
    とも一つを記憶する、すなわち、 A.同様の仮想チャンネル番号を有するMDB受信信号
    の受信中MDB送信信号に対する少なくとも一つのポイ
    ンタ、および B.同様の仮想チャンネル番号を有するMDB送信信号
    の受信中MDB受信信号に対する少なくとも一つのポイ
    ンタの少なくとも一つを記憶するための仮想チャンネル
    メモリ手段を備える請求項5記載のディジタルデータ処
    理装置。
  7. 【請求項7】 A.前記機能ユニットの少なくとも1つ
    のが、仮想チャンネルの創成、フラッシング、閉鎖、切
    断および再開の少なくとも一つを要求する信号を発生
    し、コントローラに伝送するための手段を備え、 B.前記仮想チャンネル手段が、この信号に応答して、
    選択された仮想チャンネルを選択的に創成し、フラッシ
    ングし、閉鎖し、再開し、切断するための接続管理手段
    を備える請求項4記載のディジタルデータ処理装置。
  8. 【請求項8】 A.前記送信手段および前記受信手段の
    各々が、チャンネルフラッシングまたはチャンネル閉鎖
    信号の少なくとも一つを発生するための手段を備え、 B.前記接続管理手段が、該チャンネルフラッシング信
    号に応答して、下記の動作の少なくとも一つの動作、す
    なわち、(i) 未解決のMDB信号の特定された仮想チャ
    ンネルをクリヤし、(ii)未解決または途中のMDB信号
    を、前記のそれぞれの第1および第2機能ユニットの発
    信中のユニットに戻す動作の少なくとも一つの動作を遂
    行するためのチャンネルフラッシング手段を備え、 C.前記接続管理手段が、前記チャンネル閉鎖信号に応
    答して、特定された仮想チャンネルを、前記MDB送信
    信号および前記MDB受信信号のいずれかの供給から隔
    絶するためのチャンネル閉鎖手段を備える請求項7記載
    のディジタルデータ処理装置。
  9. 【請求項9】 前記MDB整合手段が、前記コントロー
    ラと、前記第1および第2機能ユニットの少なくとも1
    つとの間で少なくとも信号を転送するための予め定義さ
    れた仮想チャンネルを備える請求項4記載のディジタル
    データ処理装置。
  10. 【請求項10】 前記MDB整合手段が、前記接続管理
    手段と、前記第1および第2機能ユニットの少なくとも
    一つとの間において接続管理動作およびそれに対する応
    答の要求を表わす信号を2方向において転送するため
    の、予め定義された1対のCONNECT MANAGER 仮想チャン
    ネルを備える請求項9記載のディジタルデータ処理装
    置。
  11. 【請求項11】 前記MDB整合手段が、前記コントロ
    ーラ、前記第1機能ユニットおよび前記第2機能ユニッ
    トのいずれか二つの間で、下記のいずれか一つ、すなわ
    ち、(i) 通信トランザクションが行われるべき仮想チャ
    ンネルを指示する信号、および(ii)制御および通信デー
    タの少なくとも一つを転送するための、予め定義された
    DRIVER CONTROL仮想チャンネルを備える請求項9記載の
    ディジタルデータ処理装置。
  12. 【請求項12】前記MDB整合手段が、次の一つ、すな
    わち、 A.前記コントローラ、前記第1機能ユニット、および
    前記第2機能ユニットの少なくとも二つの間において診
    断およびエラー信号の少なくとも一つを転送するための
    予め定義されたMAINTENANCE およびDIAGNOSTC 仮想チャ
    ンネル、および B.前記コントローラ、前記第1機能ユニット、および
    前記第2機能ユニットの少なくとも二つの間においてデ
    バッグ信号を転送するための予め定義されたDEBUGGER仮
    想チャンネルの少なくとも一つを含む請求項9記載のデ
    ィジタルデータ処理装置。
  13. 【請求項13】 前記コントローラが、データの転送の
    完了に応答して、対応するMDB送信および受信信号を
    前記第1および第2機能ユニットの対応するものに戻す
    返送手段を備える請求項1記載のディジタルデータ処理
    装置。
  14. 【請求項14】 前記第1および第2機能ユニットの少
    なくとも一つが、前記データ転送の完了の際対応するM
    DB信号を保持するための少なくとも一つのFIFO返送手
    段を備える請求項1記載のディジタルデータ処理装置。
  15. 【請求項15】 前記の送信手段および前記受信手段の
    各々が、前記のそれぞれのFIFO返送手段のいずれの一つ
    にそれぞれのMDB信号が戻されるべきかを特定するFI
    FO返送番号を含むように前記のそれぞれのMDB送信お
    よび受信信号を発生するための手段を含む請求項14記
    載のディジタルデータ処理装置。
  16. 【請求項16】 A.前記送信手段および前記受信手段
    の少なくとも一つが、前記データ転送の完了の際実行さ
    れるべき予定された動作を特定する信号を含むように、
    前記MDB送信および受信信号の対応する信号を発生す
    るための手段を備え、 B.前記の対応する第1および第2の機能ユニットが、
    制御の復帰の際、前記の予め決定された動作を実行する
    ためのコールバック手段を備える請求項13記載のディ
    ジタルデータ処理装置。
  17. 【請求項17】 前記送信手段および受信手段の少なく
    とも一つが、前記の予定された動作を、その予定された
    動作を実行するためのプログラミング命令を指示するア
    ドレスとして特定する前記信号を発生するための手段を
    含む請求項16記載のディジタルデータ処理装置。
  18. 【請求項18】 A.前記送信手段が、少なくとも、デ
    ータが転送送出されるべき関連するメモリ手段内の1ま
    たはそれ以上のアドレスおよび0、1または複数の他の
    データを含むMDB送信信号構造体を発生するための手
    段を備え、 B.前記受信手段が、少なくとも、データが転送される
    べき関連するメモリ手段内の1または複数のアドレスお
    よび0、1またはそれ以上の他のデータを含むMDB受
    信信号構造体を発生するための手段を備え、 C.前記送信および受信手段の各々が、前記MDB送信
    および受信信号構造体の対応するものに対するポインタ
    としてMDB信号を発生するための手段を備える請求項
    1記載のディジタルデータ処理装置。
  19. 【請求項19】 前記返送手段が、要求されるデータ転
    送の状態を指示する信号を含むように前記MDB送信お
    よび受信信号をマークするための手段を含む請求項13
    記載のディジタルデータ処理装置。
  20. 【請求項20】 前記FIFO返送手段が、MDB信号を表
    す信号を記憶しかつその受信の際割込みを発生するため
    のINTERRUPT バッファ手段を備える請求項13記載のデ
    ィジタルデータ処理装置。
  21. 【請求項21】少なくとも第1および第2の機能ユニッ
    トを有し、その各々が、アドレス可能な位置にデータを
    記憶するための関連するメモリ手段を備え、該各メモリ
    手段が、読取りモードにおいて、加えられるアドレス信
    号に応答して、かかるアドレス信号により特定される位
    置に記憶されるデータを表わすデータ信号を発生し、書
    込みモードにおいて、加えられるアドレスおよびデータ
    信号に応答して、かかるアドレス信号により特定される
    位置にかかるデータ信号により特定されるデータを記憶
    し、そして前記第1および第2機能ユニットに結合され
    て両者間においてデータを転送するためのコントローラ
    手段を備える形式のディジタルデータ処理装置を操作す
    る方法において、 A.前記第1機能ユニット内において、データが転送送
    出されるべき関連するメモリ手段内の1または複数のア
    ドレスを特定するMDB送信信号を発生し、そのMDB
    送信信号を前記コントローラ手段に転送し、前記第2機
    能ユニット内において、データが転送されるべき関連す
    るメモリ手段内の1または複数のアドレスを特定するM
    DB受信信号を発生し、そのMDB受信信号を前記コン
    トローラ手段に転送し、 B.前記コントローラ手段において、少なくとも選択さ
    れたMDB送信信号を選択されたMDB受信信号に整合
    させ、整合しているMDB信号により特定される前記第
    1および第2機能ユニットのメモリ手段の対応する位置
    間においてデータの転送を実行するための信号を発生
    し、 C.前記コントローラ手段内において、前記転送実行信
    号に応答して、 i)前記第1機能ユニットのメモリ手段に、前記MDB送
    信信号内に特定されるアドレスを表わすアドレス信号を
    供給し、そのアドレス信号の供給に応答して該メモリ手
    段からそれにより発生されるデータ信号を受信し、 ii) これらのデータ信号を前記第2機能ユニットのメモ
    リ手段に、前記MDB受信信号に特定されるアドレスを
    表わすアドレス信号とともに供給する諸段階を含むこと
    を特徴とするディジタルデータ処理装置操作方法。
  22. 【請求項22】 前記第1および第2機能ユニットによ
    り発生される前記MDB信号を複数の仮想チャンネルに
    沿って整合させることを含む請求項21記載のディジタ
    ルデータ処理装置操作方法。
  23. 【請求項23】 A.前記整合が行われるべき仮想チャ
    ンネルを特定する仮想チャンネル番号を含むように前記
    MDB送信信号および前記MDB受信信号を発生し、 B.前記コントローラ手段内において、同様の仮想チャ
    ンネル番号を有するMDB送信および受信信号の受信に
    応答して、前記転送実行信号を発生することを含む請求
    項22記載のディジタルデータ処理装置操作方法。
  24. 【請求項24】 A.前記機能ユニットのいずれかにお
    いて、仮想チャンネルの創成、フラッシング、切断およ
    び再開の少なくとも1つを要求する信号を発生し、 B. この要求信号に応答して、選択された仮想チャン
    ネルを選択的に創成し、フラッシングし、閉鎖し、再開
    し、切断することを含む請求項21記載のディジタルデ
    ータ処理装置操作方法。
JP16739493A 1992-06-15 1993-06-15 入力/出力制御装置および方法 Expired - Lifetime JP3280759B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/898,157 US5475860A (en) 1992-06-15 1992-06-15 Input/output control system and method for direct memory transfer according to location addresses provided by the source unit and destination addresses provided by the destination unit
US898157 1992-06-15

Publications (2)

Publication Number Publication Date
JPH06161932A true JPH06161932A (ja) 1994-06-10
JP3280759B2 JP3280759B2 (ja) 2002-05-13

Family

ID=25409036

Family Applications (1)

Application Number Title Priority Date Filing Date
JP16739493A Expired - Lifetime JP3280759B2 (ja) 1992-06-15 1993-06-15 入力/出力制御装置および方法

Country Status (7)

Country Link
US (1) US5475860A (ja)
EP (1) EP0578013B1 (ja)
JP (1) JP3280759B2 (ja)
AT (1) ATE164243T1 (ja)
AU (1) AU4124993A (ja)
CA (1) CA2098350A1 (ja)
DE (1) DE69317481T2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6381190B1 (en) 1999-05-13 2002-04-30 Nec Corporation Semiconductor memory device in which use of cache can be selected
WO2006009168A1 (ja) * 2004-07-21 2006-01-26 Yokogawa Electric Corporation 通信システム

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW276312B (ja) * 1992-10-20 1996-05-21 Cirrlis Logic Inc
AU2093795A (en) 1994-03-11 1995-09-25 Panda Project, The Modular architecture for high bandwidth computers
US6163793A (en) * 1994-08-05 2000-12-19 Intel Corporation Method and apparatus for using a driver program executing on a host processor to control the execution of code on an auxiliary processor
WO1997002519A1 (en) * 1995-06-30 1997-01-23 Siemens Energy & Automation, Inc. Voltage regulator controller having means for automatic configuration of accessory devices
EP0768609B1 (en) * 1995-10-16 2003-06-25 Hitachi, Ltd. Multimedia data transferring method
US5968143A (en) * 1995-12-13 1999-10-19 International Business Machines Corporation Information handling system for transfer of command blocks to a local processing side without local processor intervention
US7577782B2 (en) * 1996-02-02 2009-08-18 Sony Corporation Application programming interface for data transfer and bus management over a bus structure
US5991520A (en) * 1996-02-02 1999-11-23 Sony Corporation Application programming interface for managing and automating data transfer operations between applications over a bus structure
US6233637B1 (en) 1996-03-07 2001-05-15 Sony Corporation Isochronous data pipe for managing and manipulating a high-speed stream of isochronous data flowing between an application and a bus structure
US6519268B1 (en) 1996-03-07 2003-02-11 Sony Corporation Asynchronous data pipe for automatically managing asynchronous data transfers between an application and a bus structure
US5797043A (en) * 1996-03-13 1998-08-18 Diamond Multimedia Systems, Inc. System for managing the transfer of data between FIFOs within pool memory and peripherals being programmable with identifications of the FIFOs
US5822553A (en) * 1996-03-13 1998-10-13 Diamond Multimedia Systems, Inc. Multiple parallel digital data stream channel controller architecture
US6070219A (en) * 1996-10-09 2000-05-30 Intel Corporation Hierarchical interrupt structure for event notification on multi-virtual circuit network interface controller
US6151688A (en) 1997-02-21 2000-11-21 Novell, Inc. Resource management in a clustered computer system
US5951706A (en) * 1997-06-30 1999-09-14 International Business Machines Corporation Method of independent simultaneous queueing of message descriptors
US6081851A (en) 1997-12-15 2000-06-27 Intel Corporation Method and apparatus for programming a remote DMA engine residing on a first bus from a destination residing on a second bus
US6219828B1 (en) * 1998-09-30 2001-04-17 International Business Machines Corporation Method for using two copies of open firmware for self debug capability
US6496487B2 (en) 1998-11-05 2002-12-17 Visteon Global Technologies, Inc. Efficient full duplex simultaneous message transfer
JP3990833B2 (ja) * 1998-12-11 2007-10-17 キヤノン株式会社 通信制御方法及び装置
US6393506B1 (en) 1999-06-15 2002-05-21 National Semiconductor Corporation Virtual channel bus and system architecture
US6467084B1 (en) * 1999-12-16 2002-10-15 Emware, Inc. Systems and methods for reprogramming an embedded device with program code using relocatable program code
US6802022B1 (en) 2000-04-14 2004-10-05 Stratus Technologies Bermuda Ltd. Maintenance of consistent, redundant mass storage images
US6862689B2 (en) 2001-04-12 2005-03-01 Stratus Technologies Bermuda Ltd. Method and apparatus for managing session information
US6901481B2 (en) 2000-04-14 2005-05-31 Stratus Technologies Bermuda Ltd. Method and apparatus for storing transactional information in persistent memory
JP2001333137A (ja) * 2000-05-23 2001-11-30 Mitsubishi Electric Corp 自主動作通信制御装置及び自主動作通信制御方法
US6629166B1 (en) * 2000-06-29 2003-09-30 Intel Corporation Methods and systems for efficient connection of I/O devices to a channel-based switched fabric
US6886171B2 (en) * 2001-02-20 2005-04-26 Stratus Technologies Bermuda Ltd. Caching for I/O virtual address translation and validation using device drivers
US6766413B2 (en) 2001-03-01 2004-07-20 Stratus Technologies Bermuda Ltd. Systems and methods for caching with file-level granularity
US6874102B2 (en) 2001-03-05 2005-03-29 Stratus Technologies Bermuda Ltd. Coordinated recalibration of high bandwidth memories in a multiprocessor computer
US6785753B2 (en) * 2001-06-01 2004-08-31 Sonics, Inc. Method and apparatus for response modes in pipelined environment
EP1341092A1 (en) * 2002-03-01 2003-09-03 Motorola, Inc. Method and arrangement for virtual direct memory access
US7788324B2 (en) * 2002-03-29 2010-08-31 Atto Technology, Inc. Method and system for improving the efficiency and ensuring the integrity of a data transfer
KR100365910B1 (en) * 2002-08-02 2002-12-31 Nexon Co Ltd System for transmitting/receiving file
US8868852B2 (en) 2010-07-07 2014-10-21 Marvell World Trade Ltd. Interface management control systems and methods for non-volatile semiconductor memory
US9141538B2 (en) 2010-07-07 2015-09-22 Marvell World Trade Ltd. Apparatus and method for generating descriptors to transfer data to and from non-volatile semiconductor memory of a storage drive
US9135168B2 (en) 2010-07-07 2015-09-15 Marvell World Trade Ltd. Apparatus and method for generating descriptors to reaccess a non-volatile semiconductor memory of a storage drive due to an error
GB2523694B (en) * 2012-11-21 2020-11-11 Qatar Foundation Methods, remote access systems, client computing devices, and server devices for use in remote access systems
CN105408874B (zh) 2013-07-31 2018-09-18 慧与发展有限责任合伙企业 用于移动数据块的方法、存储器系统及存储介质
US10025736B1 (en) * 2014-04-17 2018-07-17 Bitmicro Networks, Inc. Exchange message protocol message transmission between two devices
EP3218826A4 (en) 2014-11-13 2018-04-11 Virtual Software Systems, Inc. System for cross-host, multi-thread session alignment
US11748174B2 (en) * 2019-10-02 2023-09-05 Intel Corporation Method for arbitration and access to hardware request ring structures in a concurrent environment

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4419728A (en) * 1981-06-22 1983-12-06 Bell Telephone Laboratories, Incorporated Channel interface circuit providing virtual channel number translation and direct memory access
IT1151351B (it) * 1982-01-19 1986-12-17 Italtel Spa Disposizione circuitale atta a realizzare lo scambio di dati tra una coppia di elaboratori operanti secondo il principio master-slave
US4466098A (en) * 1982-06-11 1984-08-14 Siemens Corporation Cross channel circuit for an electronic system having two or more redundant computers
US4924427A (en) * 1985-11-15 1990-05-08 Unisys Corporation Direct memory access controller with direct memory to memory transfers
US5175855A (en) * 1987-07-27 1992-12-29 Laboratory Technologies Corporation Method for communicating information between independently loaded, concurrently executing processes
JPH0693688B2 (ja) * 1989-03-31 1994-11-16 松下電器産業株式会社 通信機能付き電子機器
US5117486A (en) * 1989-04-21 1992-05-26 International Business Machines Corp. Buffer for packetizing block of data with different sizes and rates received from first processor before transferring to second processor
JP2964151B2 (ja) * 1989-07-03 1999-10-18 富士通株式会社 通信制御方式
US5255372A (en) * 1990-08-31 1993-10-19 International Business Machines Corporation Apparatus for efficiently interconnecing channels of a multiprocessor system multiplexed via channel adapters
US5237662A (en) * 1991-06-27 1993-08-17 Digital Equipment Corporation System and method with a procedure oriented input/output mechanism

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6381190B1 (en) 1999-05-13 2002-04-30 Nec Corporation Semiconductor memory device in which use of cache can be selected
WO2006009168A1 (ja) * 2004-07-21 2006-01-26 Yokogawa Electric Corporation 通信システム

Also Published As

Publication number Publication date
DE69317481T2 (de) 1998-11-19
JP3280759B2 (ja) 2002-05-13
EP0578013A1 (en) 1994-01-12
ATE164243T1 (de) 1998-04-15
CA2098350A1 (en) 1993-12-16
AU4124993A (en) 1993-12-23
US5475860A (en) 1995-12-12
EP0578013B1 (en) 1998-03-18
DE69317481D1 (de) 1998-04-23

Similar Documents

Publication Publication Date Title
JP3280759B2 (ja) 入力/出力制御装置および方法
US5706432A (en) Mechanism for receiving messages at a coupling facility
US5574945A (en) Multi channel inter-processor coupling facility processing received commands stored in memory absent status error of channels
US6636908B1 (en) I/O system supporting extended functions and method therefor
US6735636B1 (en) Device, system, and method of intelligently splitting information in an I/O system
EP0059838B1 (en) Data processing system with a plurality of host processors and peripheral devices
US5481707A (en) Dedicated processor for task I/O and memory management
US4680581A (en) Local area network special function frames
JP2539614B2 (ja) ポインタアドレスを発生するための装置および方法
US6418488B1 (en) Data transfer state machines
US5469542A (en) Serial diagnostic interface bus for multiprocessor systems
EP0959411B1 (en) Packet distribution in a microcomputer
US6397273B2 (en) System having an enhanced parity mechanism in a data assembler/disassembler for use in a pipeline of a host-storage system interface to global memory
US5535405A (en) Microsequencer bus controller system
US6317805B1 (en) Data transfer interface having protocol conversion device and upper, lower, middle machines: with middle machine arbitrating among lower machine side requesters including selective assembly/disassembly requests
KR100962769B1 (ko) 수퍼차지 메시지 교환기
US7805638B2 (en) Multi-frequency debug network for a multiprocessor array
JP2509064B2 (ja) デ―タ処理システム
US5717849A (en) System and procedure for early detection of a fault in a chained series of control blocks
US20080109569A1 (en) Remote DMA systems and methods for supporting synchronization of distributed processes in a multi-processor system using collective operations
US20080109573A1 (en) RDMA systems and methods for sending commands from a source node to a target node for local execution of commands at the target node
EP0283628A2 (en) Bus interface circuit for digital data processor
US4443850A (en) Interface circuit for subsystem controller
IL95445A (en) Supervising direct memory transfer in base / target data explosion at high speed and flexibility
CA1246749A (en) Printer-tape data link processor

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20020115

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20080222

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20090222

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20100222

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20110222

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20110222

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20120222

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20130222

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20130222

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20140222

Year of fee payment: 12

EXPY Cancellation because of completion of term