JPH02158858A - メツセージ転送機構 - Google Patents

メツセージ転送機構

Info

Publication number
JPH02158858A
JPH02158858A JP1271895A JP27189589A JPH02158858A JP H02158858 A JPH02158858 A JP H02158858A JP 1271895 A JP1271895 A JP 1271895A JP 27189589 A JP27189589 A JP 27189589A JP H02158858 A JPH02158858 A JP H02158858A
Authority
JP
Japan
Prior art keywords
buffer
message
queue
address
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
JP1271895A
Other languages
English (en)
Other versions
JPH0675262B2 (ja
Inventor
Jean Calvignac
ジヤン・カルヴアニヤツク
Jean-Pierre Lips
ジヤン・ピエール・リツプス
Jean-Marc Millet
ジヤン・マルク・ミレー
Jean-Marie Munier
ジヤン・マリー・ミユニエ
Bernard Naudin
ベルナール・ノダン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH02158858A publication Critical patent/JPH02158858A/ja
Publication of JPH0675262B2 publication Critical patent/JPH0675262B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • Information Transfer Systems (AREA)
  • Communication Control (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 A、産業上の利用分野 本発明は、複数のユーザが共用しているメモリを、ユー
ザがメモリを介して効率よくメツセージを交換できるよ
うに管理するための機構に関するものである。
B、従来技術及びその課題 通信ネットワーク内で、ネットワーク・ノードに配置さ
れている制御システムは、最低限、基準モデルの最初の
3つの層、すなわち物理層、データ・リンク制御層及び
経路制御層として定義される機能を実行しなくてはなら
ない。
今後、これらのシステムは、高速リンクを介してますま
す多数のユーザにサービスを提供しなくてはならなくな
る。高速アダプタにより、高速通信リンクに対しサービ
スを行なうことのできるシステムが、欧州特許出願第2
44544号明細書に開示されている。このシステムの
中央制御装置は、中央制御装置メモリのバッファをユー
ザ・リンクに割り当てる、ネットワーク制御プログラム
を実行する。高速アダプタは、バッファリング手段を備
えている。このバッフ1リング手段中で受信フレームの
データ部分がアセンブルされて、直接メモリ・アクセス
経路を介して中央制御装置のメモリに記憶される。受信
フレームの制御部分は、アダプタ・マイクロプロセッサ
によって、中央制御装置とアダプタを接続する入出力バ
スを介して中央制御装置に供給される。
このようなシステムの性能は、2つの要因によって制限
される。すなわち、第1に、メツセージをマイクロコー
ドで管理しなくてはならない。第2に、中央制御装置が
介在せずにアダプタ間でメツセージを直接交換すること
が不可能である。
本発明の目的は、通信ネットワーク・ノード中で、高価
な中央制御装置が介在しなくても任意の種類のアダプタ
間でメツセージが交換できる機構を実現することにある
本発明の別の目的は、オーバーラン条件が発生する危険
性を伴わずに、受信した一連の短メツセージからなるメ
ツセージが交換できる機構を提供することにある。
C0課題を解決するための手段 本発明による機構を用いると、ページに編成されている
メモリを介して、通信システムの発信元ユーザと宛先ユ
ーザの間でメツセージの転送が可能となる。前記メモリ
は、複数のユーザによって共用され、共通バスを介して
アクセスされる。
共用メモリは、緩衝空間と線形空間に編成されているこ
とがその特徴である。緩衝空間の各メモリ・ページは、
同じ容量のデータ・バッフ1を含む。各データ・バッフ
ァごとに、関連するデータ/バッファに関する情報を記
憶するためのバッファ制御ブロックが備わっている。線
形空間は、複数の待ち行列制御ブロック(QCB)を含
み、各発信元ユーザまたは宛先ユーザにそれぞれ1つの
待ち行列制御ブロックが固定して割り当てられている。
インバウンド・メッセージ待ち行列(L I Q)は、
次のようにして緩衝空間内に作成される。発信元ユーザ
からメツセージを受信し、バッファ空間から集められた
空いているデータ・バッフ1にそれらを記憶し、次のバ
ッファ・アドレスと待ち行列の次のメツセージ・アドレ
スを示す情報を書き込んでバッフ1を連鎖させることに
よって作成される。
待ち行列頭部と待ち行列末尾を示す情報は、対応する発
信元ユーザに割り当てられた待ち行列制御ブロックに書
き込まれる。
発信元ユーザの待ち行列制御ブロックを読み取り、そこ
から読み取った情報を用いて、宛先ユーザの待ち行列制
御ブロックが変更される。その際に、アウトバウンド・
メツセージ待ち行列(LOQ)は、前記アウトバウンド
・メツセージ待ち行列に発信元ユーザのバッファを入れ
ることによって作成される。これは待ち行列の最終バッ
ファのバッファ制御ブロックを更新することによって行
なわれ、待ち行列の内容は、読取り後、宛先ユーザに転
送される。
D、実施例 メモリは線形空間と緩衝空間で構成されている。
緩衝空間の各ページは同じ容量のm+1個のバッファに
分割される。この場合、m個のバッファはデータの記憶
専用で、1つの制御バッファがm個の制御ブロックに分
割される。1個のバッファ制御ブロックと1個のデータ
・バッファ間には固定した関係が存在する。制御ブロッ
クはバッファ及びメツセージ連鎖情報の記憶専用である
。線形空間は待ち行列制御ブロックで構成されており、
各ユーザごとに待ち行列制御ブロックが1個ずつ割り当
てられる。
メツセージは発信元ユーザからメモリ・インターフェー
ス22を介して受信され、リンク・インバウンド待ち行
列(L I Q)に入れられる。LIQは、緩衝空間か
らバッファを集めて動的に作成され、バッファ及びメツ
セージ連鎖情報を対応するバッファ制御ブロックに書き
込み、待ち行列頭部アドレスと待ち行列末尾アドレスを
ユーザ待ち行列制御ブロックに書き込んでバッファを連
鎖させる。
集中制御手段は仲介手段によって選択されたユーザから
の要求発生時に、待ち行列他側指令、待ち行列解除側指
令、及び発行側指令を処理するように設計されている。
リンク・インバウンド待ち行列が空き状態にならないと
き、メモリ・インターフェース22は集中制御手段に待
ち行列解除副指令要求を送る。前記要求は対応するユー
ザ待ち行列制御ブロックを識別する。それに応答して、
メツセージ・アドレスが宛先ユーザの待ち行列制御ブロ
ックの識別番号と共に供給される。次に、メモリ・イン
ターフェース22が集中制御手段に待ち行列化要求を発
信する。前記要求は待ち行列に入れるべきメツセージの
アドレスと宛先ユーザの待ち行列制御ブロックを識別す
る。集中制御手段によるこの待ち行列化要求の処理によ
り、メツセージがアウトバウンド待ち行列に入れられる
。メツセージはメモリ・インターフェース22によって
アウトバウンド待ち行列から宛先ユーザに転送される。
第1図は本発明に基づく機構を取り入れた通信システム
のブロック・ダイヤグラムである。
ボックス10はデータ記憶メモリ(共用メモリ)を表す
。このメモリは第2図に示すように編成され、メツセー
ジ転送の性能と融通性をシステムに与える。メモリは通
信アダプタ(または単にアダプタ)14に接続された複
数のユーザ12によって共用される。アダプタ14は特
定の物理的機能及びデータ・リンク制御層機能を実行す
る。すなわち上位層との間でメツセージ・バーストが交
換される。各アダプタは最低1人のユーザに接続される
。このシステムにより、アダプタに接続された1人のユ
ーザが、同じアダプタまたは別のアダプタに接続された
別のユーザにメツセージを転送することが可能となる。
最低1個の特定のマイクロプロセッサ・アダプタ(μP
アダプタ)16が設けられ、初期設定、エラー処理、メ
ツセージ経路指定テーブルのセットアツプなどの諸機能
を実行するマイクロプロセッサ(μP)18に接続され
ている。
本発明によるメモリ管理機構20は、共用メモリ10を
介してメツセージ転送を制御するデータ記憶インターフ
ェース(DSI)22を備え、またメモリ・バス24、
DSI集中制御システム(DC8)2Elびバス・アク
セス・アービタ28も含んでいる。インターフェース3
0が設けられ、機構20を介して共用メモリにマイクロ
プロセッサ・アダプタを接続している。
データ記憶インターフェース(DSI)22と30はす
べて各装置(通信アダプタまたはマイクロプロセッサ・
アダプタ)を共用メモリ10とインターフェースさせる
ための機構を存する。このシステムは、アダプタ内に全
メツセージを緩衝記憶することなしに、接続アダプタ1
6と14の要求に応じて共用メモリと共に優先的データ
移動を行なう1組のハードウェア手段である。
機構20の各部分の機能と構造については後で詳しく説
明する。まず機構の性能を向上させるためにメモリ10
をどう編成すればよいかについて説明する。
データ記憶メモリ10は、基本的に異なる2つの方法で
編成された2種類の情報を保持する。
各アダプタの動作には、隣接リンク・ステーションとの
間で交換すべきメツセージと制御ブロックが必要である
。HDLCプロトコルを使用してデータを交換する場合
は、フラグで分離されたHDLC(高水準データ・リン
ク制御)フレームを用いてメツセージが作成される。
したがって、メモリ10は第2図のように区分され、線
形空間10−1と緩衝空間10−2に分けられる。線形
空間10−1の部分41は、マイクロコード命令とマイ
クロコード・データの記憶専用である。線形空間10−
1の部分42は、待ち行列制御ブロック、QCB状況制
御ブロック、サービス・テーブルなどの制御ブロックの
記憶専用である。
緩衝空間102は、バッファと、対応するバッファ制御
ブロックを含む。
動的データ記憶の実施態様で高速ページング・アドレッ
シング・モードの利点を活用するため、メモリは整数個
のバッファを含む論理ページに編成される。
所与のメツセージに属するデータは、1つまたは複数の
連鎖されたデータ・バッファに記憶される。メツセージ
は互いに連鎖され、動的に作成されるメツセージ待ち行
列に入れられる。各データ・バッファは、制御バッファ
内に対応するバッファ制御ブロック(BCB)を有する
第3図は、m+1個のバッファすなわちバッフ10から
バッファmまでを含むあるページiを示す。
1番目のバッファすなわちバッファOは、他のバッファ
エないしmに関連するバッファ制御ブロック(BCB)
を保持する。
論理ページのサイズは、制御バッファ0の占有度を最適
化するように選択する。このサイズは、物理ページのサ
イズを超えることはない。様々な動的メモリの実施態様
によって提供される高速ページング・モード・アクセス
を活用するには、バッファ制御ブロックを、対応するデ
ータ・バッファと同じ物理ページに記憶しなくてはなら
ない。こうすると、データ及び制御情報を連続的に読み
取ったり更新したりするとき、アクセス時間が大幅に短
縮される。物理ページのサイズは、メモリの固定した特
性である。
本発明の代表的実施態様では、1論理ページは、512
個の4バイト・ワードで構成され、したがって論理ペー
ジ・アドレスは、512ワードの境界に対応する。1論
理ページは、7個のデータ・バッファと1個の制御バッ
ファを含み、各バッファは、256バイトからなる。所
与の論理ページの制御バッファは、この論理ページの7
個のデータ・バッファのバッファ制御ブロック(BCB
)を含む。
第3図に示すように、データ・バッファのアドレスとそ
の対応するBCBのアドレスとの間には、固定した単純
な関係がある。
データ・バッファ・アドレスは、nビットを含ム論理ペ
ージ・アドレス・フィールドを有する。
nビットとは、所与のページをアドレスするためのpO
ないしp(n−1)である。データ・バッファ・アドレ
スはさらに、bOlbl、b2の3ビツト(そのページ
が7個のデータ・バッファを含むと想定した場合)を含
むデータ・バッファ・アドレス・フィールド及びデータ
Qバッファ・ワード・アドレス・フィールドを有する。
対応するバッファ制御ブロック(BCB)アドレスハ、
同じ論理ページ・アドレス・フィールド、0に設定され
る3個の制御バッファ・アドレス・ビット、対応するB
CBをアドレスするbo、bl、b2の各ビット、なら
びにBCBが8ワード構成の場合は3ビツトからなる、
BCBワード・アドレスを含む。したがって、バッファ
制御ブロックのアドレスは、対応するデータ・バッファ
・アドレスから容易に算出でき、またその逆も可能であ
る。
本発明の別の実施例では、m個のデータ・バッファのm
個の制御ブロック(BCB)を含む制御バッファを、独
立した第1のアクセス・メモリ内に配置することができ
る。ただし、データ・バッファ・アドレスとその対応B
CBブロック・アドレスとの間に単純なアドレス関係が
存在することを条件とする。緩衝空間10−2に待ち行
列を作成するため、可変長のメツセージを記憶できるよ
うに可変数のデータ・バッファを連鎖する。第4図にバ
ッファの連鎖を概略的に示す。メツセージは複数のデー
タ・バッフ1に配置することができる。データ・バッフ
ァに関連する各バッファ制御ブロック(BCB)は、次
のバッファ・アドレスを含む。典型的実施態様ではバッ
ファ制御プロッりは最低2ワードの記憶容量を有する。
その内容を第5図に示す。バッファ制御ブロックは、メ
ツセージ連鎖制御ブロック(MCCB)とバッファ連鎖
制御ブロック(BCCB)から構成される。
MCCB・は待ち行列内のメツセージ連鎖に関する情報
を含み、BCCBはメツセージ内のバッファ連鎖に関す
る情報を含む。
メツセージ連鎖制御ブロック(MCCB)は少なくとも
次のメツセージのアドレスとメツセージ・バイト・カウ
ントを含む。
バッファ連鎖制御ブロック(BCCB)は次のバッファ
・アドレスとバッファ・バイト・カウントを含む。必要
に応じて交換処理の制御に他のフィールドを使用するこ
ともできる。
第6図に、3つのメツセージの連鎖機構を示す。
第1のメツセージは複数のバッファ中で連鎖される。第
6図には3個のバッファ1−1ないし1−3を示す。メ
ツセージ1の第1バツフアのバッファ連鎖制御ブロック
は第1メツセージの第2バツフアのアドレスを記憶し、
第1メツセージの第1バツフアのメツセージ連鎖制御ブ
ロックはメツセージ2の第1バッファ2−1のアドレス
を記憶し、メツセージ2のバッファ2−1のメツセージ
連鎖制御ブロックは次のメツセージの第1バッファ1−
1のアドレスを記憶する。この場合は、次のメツセージ
が最終メツセージになる。最終メツセージの第1バッフ
ァ3−1のメツセージ連鎖制御ブロックは、次のメツセ
ージ自アドレス・フィールド(こ、最終メツセージを指
示する16進コードrFFJを含む。
第1メツセージ、第2メツセージ及び最終メツセージを
含む第2及び第3バツフアのメツセージ連鎖制御ブロッ
クは、次のメツセージ・アドレスとして16進コードr
oOJを含むこともできるが、この情報は意味がないの
でどんな値でもよい。
これらのメツセージを含む待ち行列の待ち行列制御ブロ
ックは、そのHEADフィールドに第1メツセージの第
1バッフ11−1のアドレスを含み、そのTAILフィ
ールドに最終メツセージの第1バッファ3−1のアドレ
スを含む。
第5図に示すように、バッファ連鎖制御ブロック(BC
CB)は、第1ワードと第2ワードから成る。第1ワー
ドは、バッファ連鎖に関するものであり、第2ワードは
、必要に応じてデータ交換時に検査を行なうための制御
データを記憶するのに使用できる。
次のバッファ・アドレス・フィールド(2バイト)は、
メツセージ内の次のバッファのアドレスを指示する。現
在のバッファがメツセージ内の最終バッファである場合
には、このフィールドは、FFFFに設定される。この
次のバッフドアドレス・フィールドは、64ワード境界
を示す。すなわち、このフィールドには、次のバッファ
の第1ワードをアドレスするため、000000が右寄
せで埋め込まれる。
バッファ・バイト・カウント・フィールド(1バイト)
は、バッファ内のバイト数をバッファ・バイト0から始
まる値で指示する。
オフセット・フィールドは、バッファ内の実データ部分
が開始する場所を指示する。メツセージにヘッダ部が存
在する場合は、バッファ内のメツセージ・アドレスOに
記憶される。
メツセージ連鎖制御ブロック(MCCB)は、第5図の
とおりである。次のメツセージ・アドレス・フィールド
は、次のメツセージの第1データ・バッファのアドレス
を指示する。現在のメツセージが最終メツセージである
場合には、次のメツセージ・アドレス・フィールドがF
FFFに設定される。次のメツセージ・アドレスは、6
4ワード境界を示す。すなわち、このアドレスには、次
のメツセージの次のバッファの第1ワードをアドレスす
るため、000000が右寄せで埋め込まれる。
メツセージ・バイト・カウント・フィールドは、第1デ
ータ・バッファのバッファ・オフセット値(が存在する
場合にそれ)を含むメツセージ内の総バイト数を指示す
る。メツセージ・バイト・カウントの最大値は、64キ
ロバイトである。
メツセージ・パラメータ/状況有効ビットVは、メツセ
ージ・パラメータ/状況フィールドの有効化を行なう。
メツセージ・パラメータ/状況フィールドはメツセージ
に関する情報を保持する。
したがってメモリ10の緩衝空間10−2内で、各種の
待ち行列が多数のバッファ中に作成される。
バッファの数は必要とされる待ち行列の記憶容量に応じ
て可変である。
最大可能待ち行列数はユーザ番号に依存するもので既知
であり、待ち行列制御ブロックが線形空間10−1の要
素42内に設けられる。これは線形空間10−2にその
バッファが収納されている各待ち行列と関連付けられて
いる。待ち行列制御ブロックは待ち行列頭部のアドレス
(待ち行列の第1バツフアのアドレス)と待ち行列末尾
のアドレス(待ち行列の最終メツセージのアドレス)を
記憶し、また後で説明するように追加情報も含むことが
できる。
空きバッファ待ち行列(FBQ)はメモリ内で所与の時
間に利用可能なすべてのバッファの待ち行列である。各
メツセージが単一のバッファしか含まないものと仮定し
た場合、前に説明したのと同様に、それらのバッファは
バッファ制御ブロックによって連鎖される。本発明の好
ましい実施例では、空きバッファは、そのMCCBブロ
ック内の次のバッファ・アドレスによって連鎖される。
空きバッフ1待ち行列制御ブロック(FBQCB)に関
連する空きバッファ待ち行列は、初期設定時に作成され
る。次に後で図9に関して説明するように、それらの待
ち行列がいわゆる大城副指令マシンによって作成される
このマシンは、通信アダプタやマイクロコード・アダプ
タなどのユーザから要求があったとき、次の副指令を実
行する。それらの副指令は、次のとおりである。
ENQUEUE :  データ記憶待ち行列にメツセー
ジを入れる。
DEQUEUE :  データ記憶待ち行列からメツセ
ージを外し、要求側にメツセージのアドレスを戻す。
LEASE :  空きバッファ待ち行列から以前に外
された空きバッファのアドレスを要求側に即時戻す。
DEQ  FREE:  空きバッファ待ち行列からバ
ッファを外し、要求側にそのアドレスを戻す。
RELEASE :  あるメツセージに属するすべて
のバッファを空きバッフ1待ち行列に入れて、解放する
空きバッファは、DEQ  FREE大域副指令を発行
することにより空きバッファ供給マシンによって待ち行
列から外される。次に、そのアドレスは、要求側に与え
るべきバッファが利用可能となるように、LEASE大
域副指大域上指令、256個など多数の空きバッファ・
アドレスを含むことのできるランダム・アクセス・メモ
リに直ちに記憶される。
好ましい実施例では、空きバッファ待ち行列は、最高6
4キロまでの空きバッファ、すなわち最高18メガバイ
トまでの緩衝データを保持することができる。空きバッ
ファ待ち行列管理機能が、2つの容量しきい値(制限バ
ッファしきい値及び臨界バッファしきい値)を提供する
。後者の場合、急送流れに限って、LEASE大域副指
大域上指令れられる。
空間10−2内で作成される待ち行列には2種類ある。
すなわち、通常大域副指令によって扱われるメツセージ
待ち行列と呼ばれる待ち行列であるマイクロコード・イ
ンバウンド待ち行列MIQとリンク・アウトバウンド待
ち行列LOQ、及び着信メツセージを緩衝記憶するため
に作成されるリンク・インバウンド待ち行列LIQであ
る。
待ち行列は、線形空間10−1にある4ワードからなる
待ち行列制御ブロックQCBSによって識別される。大
城副指令は、QCB識別子QCBidを使って、それら
QCBの1つを選択する。
QCBアドレスは、次のように算出される。
QCB  idには、4ワード境界を示すため、00が
右寄せで埋め込まれる。
−QCB基準アドレスは、初期設定時に設定され、やは
り4ワード境界を示す。
例として、第7図にQCB  id書式と待ち行列制御
ブロック書式を示す。
最初のビット0及び1は、待ち行列の種類を示す。
00は、1つのアウトバウンド待ち行列及びインバウン
ド待ち行列グループを示す(ピッ、ト 0=O)  。
−01は、1つのマイクロコード・インバウンド待ち行
列を示す。
11は、1つのリンク・インバウンド待ち行列を示す。
−ビット2−5は、16個の待ち行列のうちの1つを選
択する。
16個のマイクロコード待ち行列グループのそれぞれに
、そのグループ内の各待ち行列ごとに1ビツトを保持す
るサービス・テーブルが対応しており、その待ち行列が
活動状態になっていて、グループ内の第1待ち行列が活
動状態になったときにマイクロプロセッサへの割込みを
許すかどうかを指示する。
QCB  idビット5−12は、所与のグループ内の
128個の待ち行列のうちの1つを決定する。
QCB  idは、初期設定時に、待ち行列ユーザに割
り当てられる。
第7図のメツセージ待ち行列制御ブロック(QCB)の
書式は、次のとおりである。
−QUEUE  HEADフィールド: 待ち行列内の
第1メツセージの第1バツフアのアドレス。
−QUEUE  TAILフィールド: 待ち行列内の
最終メツセージの第1バツフアのアドレス。
−QUEUE   BUFFERC0UNT:待ち行列
内のメツセージを構成するバッファの総数。
−QUEUE  5TATUS:  次の各種の標識を
含む。
待ち行列が空である 待ち行列しきい値に達した 最大バッファ・カウントに達した アクシロン・フィールドカ有効 BUFFERTHRESHOLD:   ENQ大域副
指令実行時に、「待ち行列しきい値標識」がQUEUE
  5TATUSフイールド中で設定され、またBUF
FERC0UNTがBUFFERTHRESHOLDよ
り大きい場合に、ENQリターン・コード中で戻される
MAXIMUM  BUFFERC0UNT:ENQ実
行時に、新バツファ・カウントがMAXIMUM  B
UFFERC0UNTと比較される。この値を超えた場
合、ENQ副令が拒絶され、BUFFERC0UNTは
不変のままとなり、「最大バッファ・カウントに達した
」という標識が5TATUSフイールド中で設定され、
ENQリターン・コード中で戻される。
ACT I ON :  アウトバウンド待ち行列が活
動状態になったときに送られるステージ1ン・サービス
・ウェークアップ・メツセージを含む。ACT I O
Nは、「アクシロン・フィールドが有効」という状況標
識によって有効化される。
第7図の空きバッファ待ち行列制御ブロック(FQCB
)の書式は、次のとおりである。
−QUEUE  HEAD:  待ち行列内の第1メツ
セージの第1バツフアのアドレス。
−QUEUE  TAIL:  待ち行列内の最終メツ
セージの第1バツフアのアドレス。
−QUEUE  BUFFERC0UNT:空きバッフ
ァ待ち行列内のバッファの総数。
−QUEUE  5TATUS:  次の各種の標識を
含む。
FBQ (空きバッファ待ち行列)が空である 制限バッファしきい値に達した 臨界バッファしきい値に達した アクシロン・フィールドが有効 −LIMITED  BUFFERTHRESHOLD
:  DEQ  FREE大域副指令が空きバッファ供
給マシンによって実行されるとき、「制限バッファしき
い値に達した」標識がQUEUE  5TATUSフイ
ールド中で設定され、またBUFFERC0UNTが(
LIMITED  BUFFERTHRESHOLD)
より小さい場合に、DEQFREEリターン・コード中
で戻される。
CRITICAL  BUFFERTHRESHOLD
:  DEQ  FREE大域副指令が空きバッファ供
給マシンによって実行されるとき、「臨界バッファしき
い値に達した」標識が5TATUSフイールド中で設定
され、またBUFFERC0UNTが(CRITICA
L  BUFFERTHRE−8HOLD)より小さい
場合に、DEQ  FREEリターン・コード中で戻さ
れる。
ACT I ON :  臨界状態の発生時に送られる
事象を(所定の待ち行列中に)含む。
ACT IONは、「アクシロン・フィールドが有効」
という状況標識によって有効化される。
16個のインバウンド待ち行列グループのそれぞれにつ
いて、データ記憶線形空間1中にサービス・テーブルが
ある。このサービス・テーブルは、そのグループ内の1
28個の待ち行列のそれぞれの活動状況を保持する。1
6個のサービス・テーブルが、初期設定時に提供される
サービス・テーブル基準アドレスで始まる64個(各サ
ービス・テーブルにつき4個)の連続ワード中にある。
この基準アドレスは、64ワード境界を示さなくてはな
らない。
サービス・テーブルの取扱いは、次のとおりである。
−第1ENQが所与のグループの所与のマイクロコード
・インバウンド待ち行列に対して実行されるとき、つま
り、その待ち行列が空でなくなったとき、それに対応す
るビットがそのグループのサービス・テーブル中で設定
される。
−最終メツセージが所与のグループの所与のマイクロコ
ード・インバウンド待ち行列から外されるとき、つまり
その待ち行列が空になったとき、それに対応するビット
がそのグループのサービス・テーブル中でリセットされ
る。
−所与のグループ内の第1待ち行列が活動状態になった
とき、つまりそのグループのサービス・テーブルがもは
やオール・ゼロを含まないとき、マイクロプロセッサに
対する割込みを発生させ、そのサービス・テーブルに関
する割込み要求を提示するために、割込み制御装置に信
号が送られる。
第8図は、特定のインターフェース22、中央制御シス
テム(DO8)2B及びプロセッサ・インターフェース
30の全体的配置図である。これらは、多重化回路80
,82及び84を介してバス24に接続される。これら
の多重化回路により、アービタ28の制御下で選択され
た装置22.26または30により、論理エンティティ
をバス上に置いたり、バスから受け取ったりすることも
できる。共用メモリ10へのアクセスは、通常どおり記
憶制御装置11によって制御される。
インターフェース22は、データ移動制御手段86を有
する。制御手段86は、アダプタ14に接続されたユー
ザが受け取るデータ・メツセージを連鎖し、それをLI
Q待ち行列に入れ、リンク・アウトバウンド待ち行列か
ら外されたデータ・メツセージを宛先ユーザに送る。
インターフェース22はまた、データ移動手段86と共
働し、中央制御システム26内の大城副tl令マシン(
GOM)90とインターフェースをとるステーシロン・
サービス手段88及び要求テーブル89を含む。要求テ
ーブル89は、後で第26図に関して説明するように、
データ転送を制御するため、リンク・インバウンド及び
アウトバウンド待ち行列状況に関する情報を保持する。
中央制御システム(DO8)28は大城副指令マシン9
0を含む。このマシン90は、要求側インターフェース
22または30からの大城副指令をバス24から受け取
り、それらの副指令を処理し、大城副指令を要求したイ
ンターフェースに送るべき応答を生成する。各人域副指
令に関して実施される処理については後で詳しく説明す
る。中央制御システム26はまた、空きバッファ供給マ
シン(FBS)92も含んでいる。マシン92は多重化
回路82とパス24を介して大城副指令マシン(GOM
)90にDEQ  FREE大域副指令を発行する。空
きバッファ待ち行列から外された空きバッファのアドレ
スは、専用バッファ・プールと呼ばれるランダム・アク
セス・メモリ内に記憶される。このプールは多数のその
ような専用バッファ・アドレスを含むことができる。L
EASE大域副指大域上指令どの要求側にも1つのアド
レスを与えることができる。したがって、空きバッファ
が要求側にきわめて迅速に与えられるので、オーバーラ
ン条件が発生しない。
大城副指令マシン90は、次のような優先順位のランク
で下記の要求側に対してサービスを提供する。
1−空きバッファ供給マシン 2−アダプタ・インターフェース(データ移動費(言/
ステーション・サービス) 3−マイクロプロセッサ それぞれ識別コードを有する。たとえば、マイクロプロ
セッサは000、ステーシロン・サービスは100、空
きバッファ供給マシン92は010である。各アダプタ
22はステーション・サービス機能を含んでいるので、
各ステーション・サービス機能の識別コード100にハ
ードワイヤ式識別が追加される。
大城副指令マシンにその大城副指令要求を送らせるため
、要求側はアービタ28に大域側指令要求を発信する。
優先順位がより高い他のバス要求が保留中でない場合に
は、アービタ28は要求側と大城副指令マシン90に、
大城副指令許可信号(GOENABLE信号)を送る。
要求側から送られる大城副指令要求及び大城副指令マシ
ン90から要求側に送られる大城副指令応答の一般書式
について次に説明する。
大城副指令要求/応答一般書式。大城副指令をGoで表
す。その書式を第9図に示す。
アドレス・バイト1: ビットO: 1に設定。メモリ・アクセス・モード −ビット1: 1に設定。(大域側指令)−ピッl−2
−3−4:  大域側指令要求/応答宛先識別子DST ピッ)5−6−7:  大域側指令要求/応答発信識別
子ORG 発信元/宛先フィールドは、次の要素の1つを識別する
−〇〇〇  プロセッサ 001   GOM90 010   FBS92 −100  アダプタ・インターフェースアドレス・バ
イト2: ビット0−3は大城副指令の種類を表す。
0000   ENQ −0010DEQ −0011LEASE −0100DEQ−FREE olol    REL その他のフィールド これらのフィールドは、後で説明するように大城副指令
の種類によって異なる。
ENQ大域副指令要求は、GO依存データ・バイト2及
び3中に待ち行列に入れるべきメツセージのアドレスM
SG  ADD (すなわちメツセージの第1バツフ1
のアドレス)を含み、GOアドレス・バイト2及び3中
にそのメツセージを入れるべき待ち行列の待ち行列識別
QCB  idを含む。
ENQ応答は、データ・バイトOと1中に待ち行列状況
を示すリターン・コードを含む。リターン・コードには
次のものがある。
待ち行列が空である 待ち行列しきい値に達した 要求が拒絶された DEQ (待ち行列解除)大域側指令要求は、GO依存
アドレス・バイト2及び3中に、メツセージをそこから
外すべき待ち行列の識別QCBidを含む。
DEQ応答は、データ・バイトO及び1中にリターン・
コードを含み、また外されたメツセージのアドレスMS
G  ADDを含む。
−リターン・コードには次のものがある。
−待ち行列が空である ー 待ち行列しきい値に達した 要求が拒絶された LEASE大域副指令は、大城副指令マシン90ではな
く空きバッファ供給マシン82を暗示するので、特別な
ものである。
それは、要求側にすぐにも与えることができる専用バッ
フ1のアドレスを保持する空きバッファ供給レジスタの
読取り操作にある。
この読取り操作は、アービタ28によって要求側にバス
許可が与えられると同時に発行される。
たとえ空きバッファ待ち行列がその臨界バッファしきい
値に達していたとしても、GO依存アドレス・バイト3
は、バッファ・アドレスを獲得するため、呼び出された
急送流れビットを含む。
戻されるデータは、リターン・コードとバッフ1供給マ
シン92によって与えられる専用バッファのアドレスと
からなる。
リターン・コードの内容は次のとおりである。
−制限バッファしきい値に達した − 要求が拒絶された − 専用バッファ・プールが空である DEQ  FREE(待ち行列解除フリー)大域側指令
は、空きバッファ供給マシンが専用バッファ・プールを
充たすために使用する。
DEQ  FREE要求は、DEQ  FREEタイプ
の大城副指令だけを含み、DEQ  FREE応答は、
リターン・コードと、空きバッファ待ち行列から外され
たバッファのアドレスを含む。
リターン・コードの内容は次のとおりである。
制限バッファしきい値に達した 臨界バッファしきい値に達した − 要求が拒絶された REL(解放)大域側指令要求は、データ・バイト2及
び3中にメツセージMSG  ADDのアドレスを含む
その応答は、データ・バイト0及び1中にリターン・コ
ードを含む。
リターン・コードの内容は次のとおりである。
−制限バッファしきい値に達した − 臨界バッファしきい値に達した − 要求が拒絶された 大城副指令マシン90は、すでに説明した大城副指令の
要求及び応答書式に従ってバス24上で送受信されるア
ドレス及びデータ・バイトを記憶するための入出力及び
作業用レジスタ100を含んでいる。これらの書式はま
た、必要に応じて大城副指令の実行時に情報をセーブす
るのにも使用される。
論理ブロック102は、レジスタ100と有限状態マシ
ン104の間の制御インターフェースである。有限状態
マシン104は、大城副指令を実施する論理的処理を実
行する。
大城副指令マシン90によって実施される処理について
次に説明する。
アービタ28がユーザからの大城副指令要求に応答して
線106上に大城副指令バス許可すなわちGoエネーブ
ル信号を供給する限り、大城副指令要求がバス24を介
して送られる。Go要求はマシン90から大城副指令応
答を得るまで、要求側ユーザによって活動状態に保たれ
る。
大城副指令の実行中にGOババス可がバス・アービタ2
8によってドロップされることがあるので、大城副指令
マシンは、データ記憶バス24にアクセスするたびにG
Oエネーブル線106が活動状態にあるかどうか検査す
る。GOエネーブルが非活動状態の場合は、GOエネー
ブルが活動状態になるまでそのバス・アクセスは保留さ
れる。
待ち行列化操作の流れ図を第10A図とIOB図に示す
まず、(ステップ110で)バス24から受け取ってレ
ジスタ100に入力されたENQ要求が、制御論理ブロ
ック102によって復号され、有限状態マシン102内
で待ち行列化処理が開始される。待ち行列化要求はレジ
スタ100にセーブされる。
第2の操作(ステップ111)で、先に第3図に関して
説明したように、待ち行列に入れるべきメツセージの第
1バツフアのアドレスを含むメツセージ・アドレスから
メツ”セージ・バッファ制御ブロック(BCB)のアド
レスを算出する。
このBOBブロックのMCCB及びBCCBの2ワード
が読み取られてセーブされる。これらのワードは、今後
の操作で使用されるメツセージ・バイト・カウントを含
む。
また、メツセージを入れるべき待ち行列の識別QCB 
 Idから待ち行列のアドレスQCBADDも生成され
る。
次に(ステップ112で)、QCBブロックが読み取ら
れセーブされる。このブロックは新しいメツセージを入
れるべき待ち行列のバッフトカウントを含む。
ステップ113で、待ち行列に入れるべきメツセージの
バッファ・カウントQBCを算出する。
これはMCCBからのバッファ・カウントをバッファの
内容(すなわち好ましい実施例では258バイト)で割
った商に等しい。この数字をQCBから読み取られた待
ち行列バッファ・カウントに加えて、新しいバッファ・
カウントが算出される。
ステップ114で、このカウントを最大バッファ・カウ
ントと比較する。
最大バッファ・カウントより小さい場合には、そのカウ
ントをバッファしきい値と比較する(ステップ115)
バッファしきい値より大きい場合には、しきい値識別子
がQCBの5TATUSフイールド中で設定され、リタ
ーン・コードが生成される(ステップ116)。
そうでない場合には、しきい値識別子がQCBの5TA
TUSフイールド中でリセットされ、リターン・コード
が生成される(ステップ117)。
第10A図に示されているステップ110ないし117
は制御ブロックを取り出して検査するためのものである
次に、第10B図に示すように待ち行列化処理が実行さ
れる。
まずはじめに、有限状態マシン104が、ステップ11
2でセーブされたQCB  5TATUSフイールドか
ら、その待ち行列が空であるかどうか判定する(ステッ
プ120)。
空の場合には、この待ち行列の新しいQCBが作成され
、メモリのQCBアドレスに書き込まれる(ステップ1
21)。
HEAD及びTAILフィールドにはメツセージ・アド
レスMSG  ADDが書き込まれ、5TATUSフイ
ールドには情報待ち行列が空でないという情報が書き込
まれる。また待ち行列バッファ・カウントにはステップ
113で算出された新しいバッフトカウントQBCが書
き込まれる。
ステップ122で、QCB  fdが検査され、マイク
ロコード・インバウンド待ち行列に対して待ち行列化処
理が実行されたか否かを判定する。
実行された場合には、サービス・テーブルのアドレスが
作成され、サービス・テーブルが更新される(ステップ
123)。
マイクロプロセッサに割込みが発行され(ステラ7”1
24)、マイクロコード・インバウンド待ち行列が空で
ないことを知らせる。したがってマイクロプロセッサは
待ち行列解除処理を開始してその待ち行列内に入ってい
るメツセージを獲得し、メツセージ(経路指定、経路制
御)を処理し、メツセージを宛先アウトバウンド待ち行
列に入れる。
この動作は、マイクロコードによってメツセージを処理
しなければならないときだけ必要である。
そのような場合、マイクロプロセッサは、マシン90に
待ち行列解除大域側指令を送ってメツセージを獲得する
。マシン90は後で第11A図及び11B図に関して説
明するように扱われる。マイクロプロセッサはメツセー
ジ(経路指定の流れの制御)を処理し、待ち行列化大域
側指令を送ってリンク・アウトバウンド待ち行列にそれ
らのメツセージを入れる。次にメツセージはリンク・ア
ウトバウンド待ち行列から宛先ユーザに送られる。
続いて、リターン・コードが生成され、待ち行列化応答
がバス24を介して送られる。
待ち行列がマイクロコード・インバウンド待ち行列でな
い場合には、アダプタ・インターフェースのステージ日
ン・サービス手段88が活動化される(ステップ126
)。したがって、手段88は、アダプタに接続されてい
るユーザに関するリンク・アウトバウンド待ち行列が送
信すべきメツセージを含んでいるか、またはリンク・イ
ンバウンド待ち行列が後で第26図に関して説明するよ
うに処理するため読み取られることに気づく。
待、ち行列が空でないということが検出された(ステッ
プ120)場合、メツセージ待ち行列の末尾のバッファ
制御ブロックのアドレスが、待ち行列制御ブロックの末
尾フィールドから生成される。
バッファ制御ブロックが読み取られ、その内容がセーブ
される(ステップ127)。
メツセージ中アドレスに等しいバッファ制御ブロック(
MCCB)に書き込むべき次のメツセージ・アドレスが
生成され、MCCBに書き込まれる(ステップ128)
新しい待ち行列制御ブロックが生成される(ステップ1
29)。
末尾フィールドはメツセージ・アドレスに等しく、QB
Cはステップ113で算出された新しいQBCに等しい
。待ち行列状況は「空ではない」である。新しい待ち行
列制御ブロックが書かれる。
ステップ124.12El、129またはステップ11
4の後の待ち行列化処理の最終ステップ(ステップ13
0)で、リターン・コードが生成され、出力レジスタ1
00を介してバス24上にENQ応答が送られる。
次に第11A図及び118図を参照して、待ち行列解除
処理を実施するために大城副指令マシン90が実行する
動作について説明する。
DEQ要求をバス24から受け取る。この要求は、メツ
セージをそこから外すべき待ち行列の識別QCB  i
dを含む。
要求アドレスとデータ・フィールドが1つの入力レジス
タ100にセーブされる(ステップ140)。QCBア
ドレスがQCB  idから生成される(ステップ14
1)。
QCBブロックが読み取られ(ステップ142)、その
内容がレジスタ100にセーブされる。
このブロックは、その待ち行列の第1バツフアのアドレ
スを含む。
この第1バツフアのBCBブロックのアドレスが生成さ
れ、BCBブロックが読み取られる。MCCB及びBC
CB情報がセーブされる(ステップ143)。
メツセージ・バッファ・カウントが算出される(ステッ
プ144)。これは、MCCBから読み取ったメツセー
ジ・バイト・カウントをバッファ・バイト・カウントで
割った商に等しい。このバッフドパイト・カウントは、
好ましい実施例では256である。
新しいバッフトカウントが算出される。これは待ち行列
制御ブロック内に含まれる旧QBCからメツセージ・バ
ッファ・カウントを引いた差に等しい。
新しい待ち行列バッファ・カウントをバッファしきい値
と比較する(ステップ145)。そのカウントがし者い
値より大きい場合には(ステップ148)、その待ち行
列状況のしきい値標識が設定され、リターン・コードが
生成される。
カウントがしきい値より小さい場合には(ステップ14
7)、Lきい値標識がリセットされ、リターン・コード
が生成される。
次に待ち行列解除が実行される(第11B図)応答デー
タ・フィールドが生成される(ステップ150)。戻さ
れるメツセージ・アドレスは、待ち行列制御ブロックの
頭部フィールドに含まれる待ち行列の第1バツフアのア
ドレスである。
QCBのHEADフィールドをTAILフィールドと比
較する。
両者が等しい場合には、待ち行列が空であることを意味
し、「待ち行列が空である」に一致する待ち行列状況と
リターン・コードが生成される(ステップ152)。
待ち行列制御ブロックに新しい待ち行列バ。
ファ・カウント=0が書き込まれる(ステップ153)
次に、ステップ154で、ステップ140でセーブされ
たQCB  idが検査され、その待ち行列がマイクロ
コード・インバウンド待ち行列であるかどうかが判定さ
れる。
そうである場合、その待ち行列グループに対するサービ
ス・テーブル・アドレスが生成され、サービス・テーブ
ルが更新される(ステップ158)。
そうでない場合は、要求テーブル89の状況ビットがリ
セットされる(ステップ156)。次に、ステップ15
5または158の後で、リターン・コードが生成され、
出力レジスタ100−を介してバス24上に待ち行列解
除応答が送られる(ステップ157)。
要求の発行元は外されたメツセージのアドレスを受け取
った後そのメツセージを処理することができる。
ステップ151でそのHEADアドレスが待ち行列制御
ブロック内のTAILアドレスと異なると判定された場
合は、ステップ143でセーブされた次のメツセージ・
アドレスに等しい待ち行列制御ブロックのHEADアド
レスが作成され(ステップ158)、新しい待ち行列制
御ブロックと共に待ち行列制御ブロックに書き込まれる
(ステップ158)。
次にDEQ応答がバス24上に送られる(ステップ15
7)。
次に第12A図と12B図を参照して空きバッファ待ち
行列からバッファを外すために行なわれる処理について
説明する。大城副指令のDEQFREE発行元は空きバ
ッファ供給マシン92である。
大城副指令マシンがDEQ  FREE副指令をバス2
4から受け取る(ステップ160)。
このとき、空きバッファ待ち行列制御ブロックのアドレ
スは空きバッファ待ち行列制御ブロック・アドレスであ
る。QCBが読み取られセーブされる(ステップ161
)。
QCBのHEADフィールドから第1バツフアのバッフ
ァ制御ブロックのアドレスが生成される。
BCBが読み取られ、MOCBとBCCBがセーブされ
る(ステップ182)。
新しい待ち行列バッファ・カウントが算出される(ステ
ップ163)。この新しいカウントは、QCB内の旧待
ち行列バッファ・カウントから1を引いた差に等しい。
新しいQBCが、QCB中で設定されステップ161で
セーブされた限定バッファしきい値と比較される(ステ
ップ164)。
しきい値より小さい場合、待ち行列状況及びリターン・
コードに関する限定しきい値標識がリセットされる(ス
テップ165)。
しきい値より大きい場合は、待ち行列状況及びリターン
・コードに関する限定しきい値標識がセットされる(ス
テップ168)。
新しいQCBが臨界しきい値と比較される(ステップ1
67)。しきい値より小さい場合は、待ち行列状況及び
リターン・コードに関する臨界しきい値標識がリセット
される(ステップ168)。
しきい値より大きい場合は、状況及びリターン・コード
に関する臨界しきい値標識がセットされる(ステップ1
θ8)。
次に、第12B図に示すように、待ち行列解除処理が行
なわれる。
応答データ・フィールドが生成される(ステップ170
)。これはステップ161でセーブされたHEADフィ
ールドに等しい。
新しいQBCに一致する待ち行列バッファ・カウントが
生成される。ステップ162でセーブされた次のメツセ
ージ・アドレスに一致するQBCの新しいHEADフィ
ールドが生成され、QCBが書き込まれる(ステップ1
71)。
リターン・コードが生成され、DEQ  FREE応答
がバス24上に送られる(ステップ172)。
このようにして、空きバッファ供給マシン92は、後で
説明するように専用バッファ・プールに追加される空き
バッファのアドレスを獲得する。
次に、これらのメツセージの内容が宛先ユーザに首尾よ
く送られたとき、バッフ1を空きバッフ1待ち行列に入
れる解放処理について、第13A図、第13B図及び第
130図を参照して説明する。
空きバッフ1待ち行列では、次のメツセージ・アドレス
がMCCHに含まれているためにバッファが互いに連鎖
され、メツセージが1つのバッファだけに含まれている
と考えられるので、BCCB内の次のバッファ・アドレ
スは常にFFFFに一致する。
第13A図の第1の動作で解放処理の準備が行なわれる
RELEASE要求をバス24から受け取る(ステップ
180)。これは解放すべきメツセージのアドレスを含
む。
このメツセージは、1つのバッファだけに含まれている
こともあり、また連鎖された複数のバッファに含まれる
こともある。
そのメツセージの第1バツフアのバッファ制御ブロック
(BCBアドレス)がメツセージ・アドレスから生成さ
れる。MCCB及びBCCB情報が読み取られる。待ち
行列制御ブロック・アドレスQCB  ADDが生成さ
れる。これは空きバッファ待ち行列アドレスと一致する
。QCBの内容が読み取られセーブされる(ステップ1
81)。
新しい待ち行列バッファ・カウントすなわち新しいQB
Cが算出される。これはステップ181でセーブされた
QCBブロック内に含まれる旧バッファφカウントにメ
ツセージ・バッフトカウントを加えた和に一致する。メ
ツセージ・バッファ・カウントは、ステップ181でセ
ーブされたMCCB内に含まれるメツセージ・バイト・
カウントに一致する(ステップ182)。
新しいQBCがステップ181でセーブされたQBC内
に含まれる限定バッファしきい値と比較される(ステッ
プ183)。
しきい値よりも小さい場合、待ち行列状況及びリターン
・コードに関する限定しきい値標識がセットされる(ス
テップ184)。
しきい値よりも大きい場合は、待ち行列状況及びリター
ン・コードに関する限定しきい値標識がリセットされる
(ステップ185)。
新しいQBCはまた臨界バッファしきい値とも比較され
る(ステップ188)。しきい値よりも小さい場合は、
待ち行列状況及びリターン・コードの臨界しきい値標識
がセットされる(ステップ187)。しきい値より大き
い場合は、待ち行列状況及びリターン・コードの臨界し
きい値標識がリセットされる(ステップ188)。
次にメツセージ・バッファが検査され、第13B図に示
すようにマークされる。
カウンタ「現在のバッファ・アドレスJ  (CBA)
がメツセージ・アドレスの初期値に設定される(ステッ
プ189)。
ステップ181でBCCBからセーブされた次のバッフ
ァ・アドレスに一致する次のメツセージ・アドレスが生
成される(ステップ190)。
次のバッファ・アドレスが検査される(ステップ191
)。
次のバッファ・アドレスがFFFFに一致スル場合は、
バッファが最終メツセージ・バッファであることを意味
し、FFFFに一致する次のバッファ・アドレスが生成
され、FFFFに一致するMCCBとBCCBが書き込
まれる(ステップ192)。
FFFFに一致しない場合は、FFFFに一致スル次の
バッファ・アドレスが生成され、CBAカウンタがステ
ップ190で生成された次のバッフT・アドレスに設定
される。MCCBにCBA値が書き込まれ、BCCBに
FFFFが書き込まれる(ステップ193)。
次のBCBアドレスが生成され、次のBCCBが読み取
られ、セーブされる(ステップ194)。
次に、ステップ190に入り、次のバッファ・アドレス
がFFFFであることが、すなわちメツセージ・バッフ
ァの制御ブロックが更新されたことが判明するまで処理
が実行される。次に第13C図に示すように待ち行列化
処理が実行される。
空きバッファ待ち行列の最終バッファのBCBのアドレ
スが、空き待ち行列制御ブロックのTAILフィールド
から生成される。ブロックの内容が読み取られセーブさ
れる(ステップ195)。
ステップ181でセーブされたメツセージ・アドレスに
一致するMCCBに次に書き込むメツセージ・アドレス
が、空きバッフ1待ち行列の最終メツセージ・バッファ
のMCCBブロックに(解放前に)書き込まれる(ステ
ップ196)。
CBAカウンタ値及びステップ182で算出された待ち
行列バッファ・カウントに等しいQCBのTAILフィ
ールドが生成され、QCBブロックが書き込まれる(ス
テップ197)。
最後に、リターン・コードが生成され、RELEASE
応答がバス24上に送られる。
次に空きバッファ供給マシン92について第14図を参
照して説明する。
マシン92は、専用ハッフトプール(LBP200)を
備えている。LBP200はランダム・アクセス・メモ
リであり、DEQ  FREE大域副指令応答中で空き
バッファ供給マシン92が受け取った空きバッファのア
ドレスがそこに書き込まれる。
待ち行列解除空き大域側指令が制御回路202から送ら
れる。これは第15A図及び第15B図に示すような専
用バッファ・プールのローディング操作を実施する有限
状態マシンである。
レジスタ204は、有限状態マシン202用の作業レジ
スタと、バス24とのインターフェースをとる入出力レ
ジスタを含む。
有限状態マシン202はまた、線205−L及び205
−Cを介してリターン・コードを受け取る。このリター
ン・コードは、空きバッファ待ち行列が満杯の標識を与
えるDEQ  FREE大域副指令応答中で大城副指令
マシン90から送られる、限定しきい値に達した及び臨
界しきい値に達したとのコードである。
専用バッファ・プールはアクセス・マネージャ20Bの
制御下でアクセスされ、専用バッファ・プールに含まれ
るバッファ・アドレスの数の標識を有限状態マシン20
2に供給するカウンタ208の制御下で動作する。
専用バッファ・プール200のアドレスが、後で第15
B図に関して説明するように、ポインターイン・レジス
タ212及びポインターアウト・レジスタ214の制御
下でバス210に提供される。
有限状態マシン202は回線214を介してアービタ2
8にバス要求を供給し、回線216を介してアービタ2
8からバス許可信号を受け取る。
何限状態マシン202は後で第16図に関して説明する
ようにLEASE大域副指令の実行も行なう。
マシン202は、バス24から専用化要求を受け取り、
要求側に、専用バッファ・プール200からLEASE
レジスタ218に記憶されるバッファのアドレスを供給
する。
次に第15A図及びB図を参照して専用バッファ・プー
ルのローディングについて説明する。
まずはじめに(ステップ250)有限状態マシン202
が専用化大域側指令が進行中であるかどうか検査する(
ステップ251)。検査中である場合、処理は待ち状態
となる。
進行中でない場合、マシン202は専用バッファ・プー
ルが満杯であるかどうか検査する(ステップ252)。
満杯である場合、ステップ251で処理が再開される。
満杯でない場合、DEQ  FREE大域副指令要求が
生成され、線214が活動化される(ステップ253)
許可線216を検査して(ステップ254)、空きバッ
ファ供給マシンがバス24にDEQFREE要求を送出
できるかどうか検査する。
線21Bがアービタ28によって活動化されると、DE
Q  FREE要求が特定のレジスタ204を介してバ
ス24上に送られる(ステップ255)。
次に、有限状態マシンがDEQ  FREE応答を待つ
(ステップ256)。応答を受け取ると(ステップ25
7)、バッファ・アドレス及びリターン・コードが特定
の作業レジスタ204にセーブされる。
次に、専用化大域側指令が進行中であるかどうか判定す
るために検査が行なわれる(ステップ258)。リター
ン・コードが検査され(ステップ258)、待ち行列が
満杯の場合は、マイクロプロセッサ18の制御装置に割
込みを行なうための割込み信号が活動化される(ステッ
プ259)。
また許可信号または許可応答を所与の時間内に受け取ら
なかった場合には、ステップ259に入る。
イエスの場合には、処理が待機状態となり、ノーの場合
にはカウンタ208が検査される(ステップ259)。
バッファ・カウントが0であることが判明した場合、ス
テップ257でセーブされたバッファ・アドレスが専用
レジスタ218に書き込まれ、カウンタが1に設定され
る(ステップ260)。次に処理がステップ285へ進
む。
カウンタ値がゼロではないことが判明した場合、バッフ
ドアドレスがレジスタ212内のポインタで指示される
アドレスに書き込まれ、カウンタがPOOLCOUNT
+1に設定される(ステップ261)。
次に、レジスタ内のポインタの内容がFFに一致してい
るかどうか検査される。FFはバッファ・プールが満杯
であることを示す(ステップ262)。FFに一致して
いる場合には、レジスタ212内のポインタがOOに設
定され(ステップ263)、そうでtい場合には、ポイ
ンタが1だけ増分される(ステップ264)。
次に、アービタ28に通じる大城副指令要求線218が
リセットされ(ステップ285)、ステップ251で処
理が再開される。
有限状態マシン202はまた、バッファを特徴とする特
定のユーザに空きバッフ1のアドレスを提供するため、
LEASE副指令を処理する。
LEASE副指令の処理は第16図のとおりである。
LEASE要求はバス24から受け取って、特定の作業
用レジスタ204にセーブされる(ステップ270)。
空きバッファ待ち行列制御ブロック内の「臨界しきい値
に達した」標識が検査される(ステップ271)。
この標識が設定されている場合、空きバッファ待ち行列
が臨界数のバッファを含むことを意味し、急送流れに対
するLEASE要求のみが受け入れられる。したがって
LEASE要求内の急送流れビットが検査される(ステ
ップ272)。それが活動状態にある場合、あるいは空
きバッファ待ち行列(FBQ)が臨界満杯状態でない場
合にはステップ273に入る。
ステップ273で、専用バッフトプールの状況が検査さ
れ、空でないことが判明した場合は、ステップ274に
入る。
ステップ274で、リターン・コードが生成される。専
用バッファ・プールのポインタアウト・レジスタ214
によって供給されるアドレスの位置が読み取られる。カ
ウンタ208が1だけ減分され、専用レジスタ218の
内容とリターン・コードがバス24上に送られる。読み
取られた専用バッファ・プール位置の内容が専用レジス
タ218に再ロードされる。
ステップ275で、ポインタアウト・レジスタの内容が
最大値FFであるかどうか検査される。
FFである場合は、ポインタアウト・レジスタ214が
リセットされる(ステップ276)。そうでない場合は
、レジスタが1だけ増分される(ステップ277)。
ステップ273で専用バッファ・プールが空であると判
定された場合、あるいはステップ272で急送流れビッ
トが活動状態にないことが判明した場合はステップ27
8に入る。
LEASE要求が拒絶されたことを示すリターン・コー
ドが生成され、LEASE応答がバス24上に送られる
大城副指令マシン90と空きバッフ1供給マシン92が
、マイクロプロセッサ18により、バス24とレジスタ
100及び204を介してマイクロプロセッサから送ら
れた制御メツセージで初期設定されリセットされる。
初期設定処理はマイクロプロセッサ18で実行されるマ
イクロ・コードによって実施される次の各ステップから
構成される。
空きバッファ待ち行列とメツセージ待ち行列制御ブロッ
クのTHRESHOLDフィールドが書き込まれる。待
ち行列制御ブロックの待ち行列最大バッファ・カウント
が書き込まれる。
緩衝空間は、バッファ制御ブロックを書き込んでバッフ
ァをそれらが空きバッファ待ち行列を形成する順序で連
鎖することにより書式化される。
バッファ供給マシンはFBS活動制御メツセージを発行
することにより活動化される。次に、空きバッファ供給
マシンが258DEQ  FREE大域副指令を発行し
て専用バッファ・プール200を充填する。
レジスタとカウンタをクリアし、空きバッファ供給マシ
ン92を非活動化するリセット制御メツセージによって
、マシン90と92がリセットされる。
大域側I旨令マシン90と有限状態マシン92中に設け
られる論理回路とを限状態マシンについては詳細は示さ
ない。当業者ならそれらの機能を表すフローチャートか
ら容易に実施できるはずである。
次に、先に第6図に関して説明したのと同じ連鎖の概念
を利用して、リンク・インバウンド待ち行列がアダプタ
・インターフェース22によってどのように作成される
かについて説明する。
データ移動受信回路(RCV)88は次の諸機能を実行
する。
RCV回路8Bは、アダプタ14が受け取ったインバウ
ンド・データをバス300を介して獲得する。
RCV回路86は、フリップ/フロップ・バッファ・イ
ンターフェース機構を有している。この機構は、フリッ
プ制御レジスタ303を伴ったフリップ・バッファ30
2と、フロップ制御レジスタ305を伴ったフリップ/
フロップ・バッファ304を含む。制御バッファ303
及び305は、フリップ/フロップ・バッフy 302
及ヒ304を処理するのに使用される情報を保持する。
フリップ/フロップ・バッファ302及び304の最大
容量は、受信するデータ・バーストの長さにより異なる
。ただし、受信データ・バーストが256バイト構成で
あるものと仮定する。
RCV回路86はまた有限状態マシン306と有限状態
マシン308を含む。マシン306はフリップ/フロッ
プ・バッファ302及び304からのデータを多重化回
路80を介してメモリ10に転送する。マシン308は
、バッファとメツセージを連鎖させ、それらを待ち行列
に入れてリンク・インバウンド待ち行列LIQを作成す
る。
メツセージの転送はスケジューリング回路310の制御
下で行なわれる。これは、有限状態マシン30B及び3
08によって実行される各種操作のタイミングを調整す
る。
初期設定時に、CB制御ブロック・バッファ312は一
部の制御情報を含む制御ブロックを受け取る。これらの
制御ブロックは、データ・バーストが対応するリンク・
インバウンド待ち行列に転送されたときに更新される。
データ・バーストがそこからリンク・インバウンド待ち
行列に転送される転送先の選択されたユーザに関する制
御ブロックが、CBレジスタ314に記憶される。
有限状態マシン306と308はアダプタに接続された
複数のユーザによって共用される。また、両方のマシン
は、特定のユーザ・データ・バーストを処理するたびに
、そのユーザに対応する制御情報の状態を知っていなく
てはならない。
マシン306はデータ・バーストの処理を開始するとき
、対応する制御ブロックをバッファ312からレジスタ
314にロードする。制御ブロックのアドレスは、フリ
ップ/フロップ制御レジスタ303及び305にロード
された識別フィールドによって提供される。それが、ア
ドレス・バス313を介してバッファ312に供給され
る。制御ブロックのローディングは、現在のデータ・バ
ーストに関連するユーザが前のユーザとは異なる場合に
のみ行なわれる。次に、レジスタ314の内容がマシン
306によって使用され、バースト処理時に更新され、
全バースト・データがリンク・インバウンド待ち行列に
転送された後に、その内容がバッファ312にセーブさ
れる。したがって、他のユーザに注意しながら特定のユ
ーザの状態を保持し、次のバーストを処理しなくてはな
らないときに、同じ条件で再開することができる。
制御ブロックの内容は次のとおりである。
現メツセージ・アドレス(2バイト):メモリ10−2
に現在アセンブルされているメツセージのアドレス。こ
のフィールドは、メツセージの第1データ・バーストが
処理されるたびにマシン306及び308により更新さ
れる。これは、空きバッファ供給マシン92から獲得さ
れた空きバッファのアドレスである。
一現ハッフトデータ記憶アドレス(2バイト): メツセージ・データを記憶するために現在使用されてい
るバッファのアドレス。メツセージのはじめに、このフ
ィールドはメツセージ・アドレスと同じ値で初期設定さ
れる。次に、現在のバッファが横杆になり、現在のメツ
セージのデータをLIQ待ち行列に引き続き記憶するた
めに新しいバッファが必要となるたびにこのアドレスは
更新される。
メツセージ累積バイト・カウント(2バイト): 受信されているメツセージによりすでにメモリ10−2
に入れられたバイトのカウント。このカウントは、LI
Q待ち行列内で使用されている空間を表し、着信メツセ
ージに対する有効に受け取ったバイト数とは異なること
がある。たとえば、バッファ・オフセットの値がこのカ
ウントに含まれる。
実際に、このフィールドは、現バッファの内部のどのア
ドレスに現在のバーストのデータを記憶するべきかを判
定するのに使用される。(8個の最下位バイトが最高2
56バイトのデータを含むことのできるバッファ内の変
位に対応する)。
−オフセット(1バイト): メツセージの第1バッファ内部の、第1有意データ・バ
イトをロードする場所(バッファ変位値)。
これはマイクロコードによって設定され、ワード境界上
になくてはならない(4バイトの倍数)。
カットオフ(1バイト): メツセージを記憶するのに使用できるバッファの最大数
。マイクロコードによって設定される。
マシン306は、所与のメツセージに対するデータ・バ
ーストを引き続き記憶するために空きバッファを必要と
するたびに、その限界を超えていないかどうか検査する
。限界を超えた場合は、マシン306はメツセージをク
ローズしてメツセージ連鎖制御ブロックMCCB中で対
応するエラー状況を設定し、その制御ブロック内でカッ
トオフ・フラッシュ・ビットをセット・アップする。
−内部フラグ(各1ビツト): 処理標識内のメツセージ: 新しいメツセージを開始す
る(第1バーストがオンで最終バーストがオフである)
とき、マシン308によって設定される。メツセージの
処理を完了した(最終バーストがオンである)とき、マ
シン306によってリセットされる。この標識は、第1
バーストがオン状態にあることが判明したとき、前のメ
ツセージがまだ処理中であるか否かを知り、次に新しい
処理を開始する前にそれを完了するため、マシン306
によって検査される。
カットオフ・フラッシュ標識: メツセージを記憶するのに必要なバッファの数がカット
オフ限界を超えたときマシン30θによって設定される
。このメツセージに関する次のデータ・バーストはすべ
てフラッシュされる。新しいメツセージの最初のデータ
・バーストが発生したとき、マシン306によってリセ
ットされる。
フリップ/フロップ・バッファ機構302及び304は
次に説明するように動作する。
通常の動作モードでは、アダプタ14はデータ・バース
トを受信しアセンブルすると、フリップ/フロップ・バ
ースト・バッファ302または304にそれを充填し、
マシンは、その内容をリンク・インバウンド待ち行列に
転送してフリップ/フロップ・バースト・バッファを空
にする。フリップ/フロップ・バースト・バッファ30
2及(、(304が共に横杆の場合にはアダプタ14は
、マシン306がフリップ/フロップ・バッファ302
または304の処理を完了するまで待たなくてはならな
い。
各フリップ/フロップ・バッファ302及ヒ304に関
連する制御フィールドにより、データ・バーストを処理
するのに必要なすべての制御情報が渡され、レジスタ3
03及び305に記憶される。
このフリップ/フロップ制御フィールドの内容は次のと
おりであるニ ー ユーザ識別(7ビツト): アダプタ14によってロードされ、データ・バーストが
どのユーザに属するかを指示する。
−バースト・レディ(1ビツト): アダプタ14によって設定され、対応するフリップ/フ
ロップ・バッファが、マシン306が処理できる状態に
あることを、すなわちデータがロードされ、関連する制
御がすべて設定されていることを指示する。リンク・イ
ンバウンド待ち行列内のすべてのデータを転送し、フリ
ップ/フロップ・バッファが再度空いてアダプタ14か
ら供給を受けられる状態になったときに、マシン306
によってリセットされる。フリップ/フロップ・バース
ト・レディ標識が共にオンの状態のときは、アダプタ1
4はそれらのうちの1つが空き状態になるまで待たなく
てはならない。
−ヘッダまたはデータ標識(1ビツト):アダプタ14
によって設定され、データ・バースト・バッファの内容
を「ヘッダ」とみなして、リンク・インバウンド待ち行
タリにメツセージ・バイト・アドレス・ゼロから順に記
憶すべきことを指示する。単一のメツセージの処理中に
複数のヘッダが発生した場合は、それらは相互にオーバ
ーレイする。
−第1バースト(1ビツト): アダプタ14によって設定され、関連するバースト(ヘ
ッダまたはデータ)が新しいメツセージの第1バースト
であることを指示する。これはまた、前のメツセージが
「最終バースト」によって終了しないときにそのメツセ
ージをクローズする(したがって1個または数個のフラ
グで分離された2つの5DLCフレームを効率的に処理
することができる)。
最終バースト(1ビツト): アダプタ14によって設定され、関連するバースト(ヘ
ッダまたはデータ)がメツセージの最終バーストであり
、回路308がメツセージをクローズし、それを前のメ
ツセージに(必要に応じて)連鎖し、関連するLIQに
入れなくてはならないことを指示する。
−バースト・バイト・カラン)(9バイト):アダプタ
14によってロードされ、現在のバースト内の有意バイ
トの数を指示する。中間バーストの場合は、これは4バ
イトの倍数でなくてはならない。最終データの場合及び
ヘッダ・タイプのバーストの場合はこれは任意の値でよ
い。
−メツセージ状況有効(1ビツト): アダプタ14によって設定され、メツセージ状況フィー
ルドが有効であることを指示する。
−メツセージ状況(2バイト): アダプタ14によって充填され、経路指定情報など処理
中のメツセージに関する情報を与え、あるいはデータと
並列に情報を転送する。この状況は、マシン30Bによ
ってメモリ10内のメツセージ制御ブロックに転送され
る。
通常1個の状況しかメツセージと並列に送ることができ
ない。状況が複数発生した場合には、それらは相互にオ
ーバーレイし、最後の状況が前の状況に優先する。明示
的最終バースト標識がオンで終わらないメツセージに単
一のバースト・メツセージ(第1及び最終バースト標識
が共にオン)が続くメツセージ状況は許されない。(そ
のような場合、その状況が前のメツセージに属するかま
たは現在のメツセージに属するかを判定することは不可
能である)。
第18図は、電源投入リセット以降のスケジューラ31
0の状態図である。
電源投入リセット時には、データ転送マシン306内の
フリップ/フロップ標識がフリップ・バースト・バッフ
ァ302を指す。これは、フリップ標識線320を活動
化し、フロップ標識線321を非活動化する(ステップ
330)。
マシン306及び308は、遊休状態になり、制御1フ
リップ・レジスタ303内で対応するバースト・レディ
標識がアダプタによって設定されるのを待つ(ステップ
331)。
次に、ステップ331で、制御レジスタ303または3
05内のユーザ識別を制御ブロック・レジスタ314と
比較して、ユーザ番号が変更されているかどうかが検査
される。
変更されている場合には、新しい制御ブロックがバッフ
ァ312からレジスタ314に転送される(ステップ3
33)。
ユーザ番号が変更されていない場合、または制御ブロッ
クのローディング後に、後で第19図を参照して説明す
るようにフリップ・バッファ・データが処理され、LI
Q待ち行列に転送される(ステップ334)。
処理の終わりに、制御ブロックがセーブされる(ステッ
プ335)。フリップ・レジスタ内のバースト・レディ
標識がリセ、ツトされる(ステップ336)。
フリップ/フロップ標識が検査される(ステップ337
)。それがr’LIPに一致する場合には、FLOPに
変更される(ステップ338)。FL。
OPに一致する場合は、FLIF’に変更される(ステ
ップ33θ)。これによって前述のフリップ/フロップ
機構が動作する。
次に、ステップ331でスケジューリング処理が再開さ
れる。
次に第19図を参照してデータ転送操作(ステップ33
4)について説明する。
データ・バーストの特性に応じて、次の4つの処理段階
を実行しなくてはならない。
−新しいメツセージを開始し、場合によっては前のメツ
セージをクローズするメツセージ開始段階 −状況情報をメツセージMCCBに転送する状況段階 第1バツフ1のアドレスOにあるヘッダまたはデータを
作成中のメツセージの現バッファに転送するヘッダまた
はデータ段階 現メツセージをクローズして、対応するLIQ待ち行列
に入れるメツセージ終了段階メツセージ開始段階の第1
ステツプ350で、育成状態マシン306が線316上
でアービタ28に対する要求を設定する(第17図)。
アービタは線317上に許可信号を出して応答する。
制御フリップ/フロップ・レジスタ303または305
内の第1バースト・ビットが検査される(ステップ35
1)。
これが1に設定されていることが判明した場合、メツセ
ージの第1バーストを受け取ったことを意味し、制御ブ
ロック・レジスタ314内の処理内部フラグ中のメツセ
ージを検査することにより、前のメツセージがなお処理
中であるかどうか検査される(ステップ352)。この
フラグが1に設定されている場合、前のメツセージの処
理を完了しなくてはならない(ステップ353)。この
フラグが0に設定されている場合、あるいは前のメツセ
ージの処理が完了したとき、新しいメツセージの処理が
開始される(ステップ354)。これらのステップ35
2ないし354については後で第20図を参照して説明
する。
次に、フリップ/フロップ制御レジスタ303/305
内のメツセージ状況有効ビットが検査される(ステップ
355)。これが1に設定されている場合は、その状況
が処理される(ステップ356)。そうでない場合は、
ステップ357に入る。
ステップ357は、データ転送の第1ステツプである。
まず初めに、受信バーストがHEADER情報またはデ
ータを含むかどうかが検査される。
データを含む場合には、バースト・バイト・カウントが
検査される(ステップ358)。それが0より小さい場
合、CBレジスタ314内のメツセージ・バイト・カウ
ントが更新される(ステップ359)。これについては
後で第21図を参照して説明する。
0より小さくない場合には、フリップ/フロップ・バッ
ファ302ないしは304内のデータ・バーストが、後
で第21図に関して説明するように、データ記憶メモリ
10−2内のメツセージ・バッファに転送される(ステ
ップ360)。
ステップ357でバーストがHEADER情Nを含むこ
とが判明した場合、バッファの内容がメモリ・バッファ
部分のメツセージ・アドレス0に転送される(ステップ
361)。
次に、ステップ3θ2で受信バーストがメツセージの最
終バーストであるかどうか検査される。最終バーストで
ある場合は、後で第21図に関して説明するように、メ
ツセージの終わりが処理される(ステップ3θ3)。最
終バーストでない場合には、これでバースト処理は終わ
り、アービタ28に対する要求がリセットされる(ステ
ップ362)。
メツセージ開始処理は第20図のとおりである。
ステップ351で、有限状態マシン306が、受信バー
ストがメツセージの第1バーストであったかどうか検査
する。
第1バーストでなかった場合は、マシン306は状況及
びヘッダ/データ処理段階へ進む。
第1バーストであった場合には、マシン306は専用レ
ジスタ218の内容を読み取って、空きバッファ供給マ
シン92からメモリ10内の空きバッファ・アドレスを
獲得する。このレジスタの内容がセーブされる(ステッ
プ370)。
次に、マシン306は、それに対する「最終バースト」
がすでに受信された、前のメツセージがまだ処理中であ
るかどうか検査する。これはレジスタ314内のメツセ
ージ処理中ビットを検査することによって行なわれる(
ステップ371)。
このビットが0であることが判明した場合は、前のメツ
セージが処理されることを意味し、メツセージ処理中ビ
ットが1に設定される(ステップ372)。
次に、バースト・ユーザに対応するリンク・インバウン
ド待ち行列、が空の場合、マシン30θは要求テーブル
89を検査する(ステップ373)。
それが空でない場合は、現メツセージがLIQ待ち行列
内の前のメツセージに連鎖される(ステップ374)。
この動作を実行するため、マシン308はステップ37
0でセーブされた空きバッファのアドレスを、LIQ待
ち行列の最終メツセージのMCCBブロックの次のメツ
セージ・アドレス・フィールドに書き込む。この最終L
IQメツセージのアドレスは、待ち行列のQCBブロッ
クの末尾フィールドにある。
前のメツセージがまだ保留中の場合は、ステップ376
及び377に入る。マシン308は、前のメツセージの
総メツセージ・バイト・カウントをそのMCCBブロッ
クに記憶する。同時に、マシン308はステップ370
でセーブされたアドレスを同じMCCBブロックの次の
メツセージ・アドレス・フィールドに書き込むことによ
り、新しいメツセージ連鎖を行なう。したがって前のメ
ツセージ・バイト・カウントを書き込み、連鎖操作を実
行するのにたった1回のメモリ・アクセスだけで済む。
このため、性能が向上し、1個のフラグのみによって分
離された短メツセージを受信することが可能となる。
ステップ377で、前のメツセージが対応するユーザL
IQに入れられる。
データ/ヘッダ・データ転送の第1ステツプ(357)
で、バーストがデータまたはヘッダ情報を含むかどうか
が検査される。これは、レジスタ314内でヘッダ/デ
ータ標識が1であるかどうかを検査することによって行
なわれる。
1の場合には、バーストはヘッダ情報を含み、マシン3
06はそれらの情報を、割り当てられたバッファのメツ
セージ・アドレスOに転送する。
これは、オフセット機構のために第1バツフア内に十分
なスペースがあることを前提条件としている。そうでな
ければ、ヘッダの最終バイトがメツセージのデータ部に
予約されている空間とオーバラップすることになる。次
に、ステップ362でメツセージ終了段階に入る。
データ/ヘッダ標識がOである場合、バースト・バッフ
ァはデータを含む可能性がある。マシン308はバッフ
ァ制御レジスタ303または305内のバースト・バイ
ト・カウントが正であるがどうか検査することによりバ
ースト・バッファ内にデータが存在するかどうかを検査
する(ステップ358)。
データが存在しない場合には、ステップ359に入る。
これはすなわち、受信バーストが前のメツセージの最終
バーストであり、総メツセージ・バイト・カウントだけ
を、前のメツセージのMCCBブロック内に記憶する前
に更新しなくてはならないことを意味する。レジスタ3
03または305内の最終バーストがオンである場合に
は、バースト・バイト・カウントはOまたは負となる可
能性があるが、−2より小さくなることはない。前のバ
ースト内の受信バイトがHDLCフレームのFC8(フ
レーム検査シーケンス)バイトを含んでいた場合には、
このカウントが負となり得る。
次にマシン306はメツセージ終了処理段階へ進む。
バースト・バイト・カウントが正の場合は、ステップ3
80に入る。これは、バースト・バッファ内に処理すべ
きデータが存在することを意味する。
マシン306はデータ・バーストをメモリ10内のデー
タ・バッファに一度に4バイトずつ転送するループを開
始する。
まず、マシン306は、制御ブロック・レジスタ内のメ
ツセージ・バイト・カウントが256の倍数であるかど
うか検査することによって、現在のデータ記憶バッファ
内にまだスペースが存在するかどうかを検査する(ステ
ップ380)。
カウントが256の倍数である場合は、現バッファは満
杯であり、回路308が空きバッファ供給マシン92の
専用レジスタを読み取って新しいバッファ・アドレスを
獲得する。このバッファはそのBCCB及びバイト・カ
ウントを更新することにより前のメツセージに連鎖され
る(ステップ381)。
現バッファが満杯でない場合、あるいはステップ381
の後で、データ転送が開始される。マシン306は、バ
ッフ1302または304からの4データ・バイトを、
制御ブロック・レジスタ314内の現バッファ・データ
記憶アドレスと転送済みバイト数とから算出されたメモ
リ10内のアドレスに転送する(ステップ382)。
マシン308はフリップ/フロップ制御レジスタ303
/305内の残りのバースト・バイト・カウントを減分
し、制御ブロック・レジスタ314内のメツセージ累積
バイト・カウントを増分する。
ステップ383でバースト・バイト・カウントが検査さ
れる。0でないことが判明した場合は、ステップ380
に入る。
0である場合は、メツセージ終了段階に入る。
ステップ362で処理済みバーストがメツセージの最終
バーストであることが判明した場合、回路308はその
メツセージ連鎖制御ブロックを更新してメツセージをク
ローズしなくてはならない(ステップ384)。回路3
08は総メツセージ・バイト・カウントを記憶し、次の
メツセージ・アドレスをFFに設定して、このメツセー
ジが、そのユーザに関し受信された最後のメツセージで
あり、処理中の次のメツセージはないことを示す。
次に(ステップ385)、待ち行列化大域側指令の優先
順位が最高であるため、完了されつつあるメツセージが
、そのメツセージに関連するユーザに対応するLIQに
入れられる。
制御バッファ314内のメツセージ処理中ビットがリセ
ットされる。
第18図ないし第21図に示すような諸機能を実施する
には、有限状態マシン306及び308が、バス24に
アクセスして、メモリ10内にデータを書き込むか、ま
たは専用レジスタ218から空きバッファ・アドレスを
読み取らなくてはならない。いずれの場合も、回路30
6は、アービタ28からバスを要求しなくてはならない
これは、マシン306及び308がバス24にアクセス
する必要があるとき線316上でセットされ、バス24
がもう必要でなくなったときそれらのマシンによってリ
セットされるバス要求によって行なわれる。線317上
のバス許可信号が、マシン306及び308にバスの使
用を許可するため、アービタ28によってセットされ、
要求信号がリセットされた後にアービタ28によってリ
セットされる。
ステーシロン・サービス88とRCV回路86の間のイ
ンターフェースは、要求テーブルを使って行なわれる。
このテーブルは、後で説明するように、ステージ日ン◆
サービスのスケジューリングを行なうための情報を含む
データ移動送信回路(XMIT)8−8は、次の3つの
主要機能を遂行する。
一リンク・アウトバウンド待ち行列内に置かれている、
以前にステーシロン・サービス88によってLOQから
外されたメツセージから書式化データを獲得する。
一アダプタからの要求時に、フリップ/フロップ機構を
介して、アダプタにこれらのデータを転送する。
このXMIT回路86は、データ移動受信回路(RCV
)86の構造と似た構造をもつ。
XMIT回路86は、関連制御レジスタ503及び50
5を備えたフリップ・バッファ502とフリップ・バッ
ファ504を有する。フリップ/フロップ・バッファ3
02及び304の最大容量は、データ・バーストの長さ
(好ましい実施例ては258バイト)によって異なる。
制御レジスタ503及び605は、それぞれフリップ/
フロップ・データ・バッファ502及び504を処理す
るのに使用される情報を保持する。
XMIT回路86は、有限状態マシン506及び508
を含む。マシン508はリンク・アウトバウンド待ち行
列から特定のバッフ1502または504へのデータ転
送を制御し、マシン508は連鎖解除処理を管理する。
マシン50B及び508の動作のスケジューリングは、
スケジューラ510の制御下で行なわれる。
XMIT回路86は、RCv回路86と同様に複数のユ
ーザによって共用される。またこの回路は、特定のユー
ザ・データ・バーストを処理するたびに、そのユーザに
対応する制御情報の状態を知らなくてはならない。これ
は、バッファ512内にある制御ブロックによって行な
われる。XMIT回路86は、データ・バーストの処理
を開始するとき、バッファ612から対応する制御ブロ
ックをレジスタ514にロードする。
制御ブロックのバッファ512内のアドレスが、制御レ
ジスタ503及び505のユーザ識別フィールドからバ
ス513によって供給される。このローディングは、現
在のバーストに関連するユーザが前のユーザと異なる場
合のみ、行なわれる。次に、レジスタ514の内容が有
限状態マシン506及び508によって使用され、デー
タ・バースト処理時に更新される。データ記憶メモリ1
0からすべてのバースト・データが転送されたときに、
それはバッファ512にセーブされる。したがって、他
のユーザを扱いながら特定のユーザの状態を維持し、次
のバーストを処理する必要があるときに、同じ条件で再
開することができる。各ユーザごとに、次の情報を保存
しなくてはならない。
−現メツセージ・データ記憶アドレス(2バイト): メモリ10から現在転送されているメツセージのアドレ
ス。このフィールドは、新しいメツセージを待ち行列か
ら外すたびにステーシロン・サービス88によってロー
ドされる(これは、後で第26図を参照して説明するよ
うに、対応するユーザに関する要求テーブル内の使用中
ビットがオフのときにのみ行なえる。) 現データ記憶バッファ・アドレス(2バイト):データ
が現在そこからフリップ/フロップ・バファ502.5
04へ転送されている転送元のバッファのアドレス。
メツセージの初めに、このフィールドが、メツセージ・
アドレスと同じ値で初期設定される。次に、これは、現
在のバッファが空になり、メツセージ連鎖の次のバッフ
ァが次のデータ獲得のため連鎖解除されるたびに更新さ
れる。
− メツセージ・バイト・カウント(2バイト):デー
タ記憶域に全メツセージを記憶するのに使用されるバイ
ト・カウントで、メツセージ転送の始めに初期設定され
る。このカウントはMCCBから取られる。これはデー
タ記憶域に使用されている空間を表し、発信メツセージ
に関する有効に送信されるバイト数とは異なることに留
意されたい。たとえば、バッファ・オフセットの値が、
このカウントに含まれる。
このカウントは、新しいバッファが連鎖解除されるたび
に256ずつ減分される。これが256より小さくなる
と、マシン506が最終バッファ・フラグを設定する。
つまり、メツセージの最終バッファが転送され、それが
転送すべき残りのバイト数を含むことを意味する。
−バッファ・バイト・カウント(1バイト):現在のバ
ッファで使用されるバイトの総数。メツセージの新しい
バッフ1が連鎖解除されるたびにロードされる。
バッファ変位(1バイト): 現バッファ内の次に転送するバイトのアドレス。
メツセージの新しいバッファが連鎖解除されるたびに、
BCCBから読み取られたオフセットに、バッファ変位
がロードされる。次に、このバッファからデータが読み
取られるたびに、これは減分される。
ヘッダ・サイズ(1バイト): メツセージ・アドレス0から始まる、ヘッダ・タイプの
データとして処理すべきバイト数。
ユーザによる初期設定時に、マイクロコードによって設
定される。
−内部フラグ(各1ビツト): 最終バッフ1= メツセージ・バイト・カウントが256より小さくなっ
たとき、マシン506によってセットされる。
新しいメツセージの処理を開始するとき、マシン506
によってリセットされる。
メツセージ処理中; メツセージの処理を開始するとき、マシン506によっ
てセットされる。
メツセージの最終バーストを転送するとき、マシン50
6によってリセットされる。
バッファ・ヘッダ: ユーザによる初期設定時にマイクロコードによって設定
される。
メツセージ・アドレス0(メツセージの第1バツフアの
アドレス0)にメツセージ・ヘッダ情報があることを指
示する。この情報は、バースト・ヘッダ制御フラグがオ
ンの状態の、第1バーストとしてアダプタに送らなくて
はならない。
通常動作モードでは、アダプタ14がバースト・リクエ
スト・フラグをセットしてフリップ/フロップ制御レジ
スタ503または505のユーザ識別記号フィールドを
ロードして、データ・バーストを要求したとき、マシン
506はデータ記憶メモリ10からデータを取り出し、
フリップ/フロップ・バースト・バッファ502(また
は504)にそれらを転送する。次に、マシン506は
、データ・バーストを送信するためにアダプタが必要と
する全情報を、関連するフリップ/フロップ制御レジス
タ503(または605)中で設定し、バーストが使用
可能状態にあることを示すバースト要求フラグをリセッ
トする。
フリップ/フロップ制御レジスタ503 (505)内
の制御情報について次に説明する。この情報は、バス5
07を介してマシン508から、またはバス300を介
してアダプタからこれらのレジスタ中で設定される。
−ユーザ識別(7ビツト): どのユーザのためにデータ・バーストを要求するかを指
示するため、アダプタによってロードされる。このフィ
ールドは、アドレッシング・バッファ512の場合、バ
ス513に供給される。
−バースト要求: ユーザ識別フィールドで指示されたユーザのためにデー
タ・バーストを要求することを指示するため、アダプタ
によってセットされる。
LOQ待ち行列からフリップ/フロップ・レジスタ50
2または504にすべてのバースト・データを転送した
とき、及び関連する制御レジスタ503または505内
の関連する制御フィールドがすべて更新されたときに、
マシン50Bによってリセットされる。
非活動(リセット)状態に初期設定される。
−ヘッダまたはデータ標m(1ビツト):データ・バー
スト・バッフ1が「ヘッダ」タイプの情報を含むことを
指示するため、マシン506によってセットされる(「
ヘッダ」・バーストは、メツセージの最初でなくてはな
らない)。
−第1バースト(1ビツト): 関連バースト(ヘッダまたはデータ)が新しいメツセー
ジの第1バーストであることを知らせるため、マシン5
06によってセットされる。
最終バースト(1ビツト): 関連バーストがメツセージの最終バーストであることを
指示するため、マシン508によってセットされる。
メツセージが単一バーストで転送できる場合は、「第1
バースト」標識と「最終バースト」標識が共にセットさ
れる。
−バースト・バイト・カウント(9ビツト):関連デー
タ・バースト内の有意バイト数を指示するため、マシン
506によってロードされる。
メツセージ状況有効(1ビツト): メッセージ状況フィールドが有効であることを指示する
ため、マシン506によってセットされる。
− メツセージ状況(2バイト): メッセージの第1バーストと並列にメツセージMCCB
状況フィールドが存在する場合、マシン508によって
充填される。
XMIT回路86は、接続アダプタに従属しており、ア
ダプタがフリップ/フロップ・バースト・バッファ制御
レジスタ503 (505)内でバースト要求フラグを
セットしてデータを要求するとき、スケジューリングさ
れる。
スケジューリングの流れ図は、第23図のとおりである
電源投入リセット時(ステップ540)に、フリップ/
フロップ制御レジスタ5031505中でバースト要求
フラグが共にリセット(非活動化)される。フリップ/
フロップ標識FF−INDICがフリップ・バースト・
バッファ502を指し、したがって線521が活動化さ
れ、線522が非活動化される。
マシン506と508が遊休状態となり、フリップ/フ
ロップ制御レジスタ503または504内のフリップ/
フロップ・バースト要求ビットがアダプタによってセッ
トされるまで待つ(ステップ541ないしは544)。
そうなったとき、フリップ/フロップ制御レジスタ50
3または505内のユーザ識別フィールドが前のバース
トの処理の終わりにセーブされた制御ブロック・レジス
タの内容と比較されて、ユーザ番号が変更されたかどう
かがステップ545で判定される。
変更されている場合は、新しいユーザに対応する制御ブ
ロックがバッファ512からレジスタ514にロードさ
れる(ステップ546)。
次に、線521と520のどちらが活動化されているか
に応じて、データ・バーストがフリップ/フロップ・レ
ジスタ502または504に転送される。データ転送操
作については、後で説明する。
バースト転送の終わりに、レジスタ514の内容がセー
ブされ(ステップ548)、バースト要求ビットがリセ
ットされる。
マシン506と508が遊休状態に戻り、フリップ/フ
ロップ・バースト要求標識が活動化されるのを待つ。
次に、第24図を参照して、転送バースト・データ・ス
テップ547について説明する。
メツセージ連鎖制御ブロックMCCBによって与えられ
る、マシン506の状況及びメツセージ特性に応じて、
異なる処理段階を実行しなくてはならない。
まず始めに、ステップ560ないしステップ563から
なるメツセージ開始段階と状況段階がある。ステップ5
59で、マシン50Bが、制御ブロック・レジスタ51
4中のメツセージ処理中ビットがOであるかどうか検査
する。Oである場合、要求テーブル89内の88  X
MIT  BUSYビットがセットされる(ステップ5
60)。次に、新しいメツセージのMCCBブロックを
読み取って、メツセージ・サイズと状況が獲得される(
ステップ561)。状況が、フリップ/フロップ制御レ
ジスタ503と505に書き込まれ(ステップ582)
、BCCBブロックを読み取って、次のバッファ・アド
レス、オフセット値及び最終ハイド・アドレスが獲得さ
れる。
マシン50Bがレジスタ514内のバッファ・ヘッダ・
ビットがオンであるかどうか検査する(ステップ564
)。
処理すべきヘッダ情報がある場合は、ステップ565に
入る。4個のヘッダ・バイトがメモリ・バッファから取
られ、フリップ/フロップ・バッファ502または50
4に転送される。
次に、ヘッダ・プロセスが完了しているかどうかが検査
され(ステップ588)、ステップ565に入り、ヘッ
ダ情報が完全にフリップ/フロップ・バッファ502ま
たは504に転送されるまで、処理が続行される。
次に、現バッファ内にデータがあるかどうか検査が行な
われる(ステップ567)。データがある場合は、レジ
スタ514内のメツセージ処理中ビットが1にセットさ
れる。データがない場合は、マシン506は、レジスタ
614内で最終/(ッファ・ビットがセットされている
かどうか検査する(ステップ568)。
最終バッファ・ビットがセットされていないか、アルい
は、現バッファにデータが存在する場合には、制御ブロ
ック・レジスタ514内でメツセージ処理中ビットがセ
ットされる(ステップ569)。
最終バッファ・ビットがオンであることが判明した場合
、メツセージ処理中ビットがOにセットされる(ステッ
プ670)。
ステップ568または570の後に、フリップ/フロッ
プ・レジスタ5−03または505が更新される(ステ
ップ571)。
ステップ564で、マシン506が、バッファがデータ
だけでヘッダ情報を含まないと判定した場合は、ステッ
プ572に入る。4個のデータ・バイトがバッファから
読み取られ、フリップ/フロップ・バッフ1502また
は504に転送され、バッファ・バイト・カウントが増
分される。
4個のバイトが転送されるたびに、マシン506が、す
べてのバッファの処理が完了したかどうか検査する(ス
テップ574)。
完了している場合には、マシン506は、処理されてい
るバッファがメツセージの最終バッファであるかどうか
を検査する(ステップ578)。
これはBCCBから読み取られ、ステップ563でセー
ブされた次のバッファ・アドレスによって指示される。
それが最終バッファである場合は、ステップ570に入
って、メツセージ処理中ビットが0にセットされ、要求
テーブル89内の88  XMITBUSYビットをリ
セットする。
最終バッファでない場合は、次のバッファが連鎖解除さ
れ、(ステップ577)そのBCCBブロックが読み取
られセーブされる。
次に、マシン506は、フリップ/フロップ・データ・
バッファ502または504が満杯かどうか検査する(
ステップ578)。満杯の場合は、ステップ571に入
り、制御レジスタ503または505内のフリップ/フ
ロップ・バッファ・カウントが更新される。
満杯ではない場合は、ステップ572に入り、次のバッ
ファの内容が転送される。
メツセージ開始段階は、第25図に詳しく示しである。
制御ブロック・レジスタ514内のメツセージ処理中ビ
ットがOであることが判明した場合、レジスタ514内
の現メツセージ・データ記憶アドレスから算出されたメ
モリ・アドレスにあるメツセージのMCCBブロックが
読み取られる。メツセージ・バイト・カウントと次のメ
ツセージ・アドレスがセーブされる(ステップ581−
1)。
次のメツセージ−アドレスが、メツセージ転送時に制御
ブロック・レジスタに書き込まれ、バッファ512にセ
ーブされることになる(ステップ548)。
メツセージ・バイト・カウントは、レジスタ514に書
き込まれる(ステップ580)。
MCCB状況が読み取られ(ステップ561−2)ステ
ップ5B2に入る。
この状況が、フリップ/フロップ制御バッファ503ま
たは505に書き込まれ、状況有効ビットが1にセット
される。
次に、バッファ連鎖制御ブロックBCCBが読み取られ
セーブされる(ステップ563)。
ステップ563で読み取られたバッファ・バイト・カウ
ントがレジスタ514のバッファ・バイト・カウント・
フィールドに書き込まれ、バッファ・オフセットがバッ
ファ変位フィールドに書き込まれる。これは、バッファ
から読み取られるバッファのアドレッシングを制御する
ことを目的とする(ステップ581)。次に、フリップ
/フロップ制御レジスタ503.505内の第1バース
ト・ビットが1にセットされ(ステ、ブ582)、ステ
ップ584に入る。
次に、第23図及び第24図に示すように、ヘッダまた
はデータが転送される。
本発明によれば、特定の発信元ユーザ12から受け取っ
たメツセージが連鎖され、ユーザ・リンク・インバウン
ド待ち行列に入れられる。
次に、ステージジン・サービスRCVがメツセージを待
ち行列から外し、メツセージ処理にマイクロコード操作
が必要でないときは、MCCB状況、フィールド・パラ
メータに応じて、各メツセージの内容により、メツセー
ジがXMIT宛先ユーザに対応する宛先リンク・アウト
バウンド待ち行列に入れられる。その場合、メツセージ
連鎖制御ブロック内の「ハードワイヤ式経路指定」ビッ
トがユーザ・リンク・アウトバウンド待ち行列のQCB
−id識別と共に活動状態となっていることが判明する
メツセージ処理にマイクロコード操作が必要なときは、
メツセージは発信元ユーザのマイクロコード・インバウ
ンド待ち行列に入れられる。マイクロプロセッサは、D
EQ大域副指令を発行して、メツセージを獲得し、それ
らを処理し、ENQ大域副指令を発行して、それらを宛
先ユーザに転送すべく宛先リンク・アウトバウンド待ち
行列に入れる。
第2e図は、ステージ日ン・サービス88に示す。これ
は、各インターフェース22内に配置され、−度に1人
のユーザを処理して、受信、送信またはメツセージ伝送
終了処理を行なう。
ステーション・サービス88は、受信論理要素(RCV
)600.送信論理要素(XMIT)602及びメツセ
ージ終了要素(ROM)604の3つの要素で構成され
ている。これらの要素は、受信、送信、及びメツセージ
伝送終了処理専用である。
これらの要素のそれぞれは、多重化回路80とバス24
を介して大城副指令マシンに大城副指令を発行する。
受信要素600は、バス60Bを介して、DEQUEU
E大域副指令とENQUEUE大域副指令を発行する。
送信要素602は、バス808を介して、DEQUEU
E大域副指令を発行する。また、バス610を介して、
メツセージ準備完了情報を発行する。この情報は、レジ
スタ652に記憶された後、特定の宛先ユーザ向けのメ
ツセージが送受信可能状態にあることを知らせるため、
アダプタ14に供給される。
アダプタは、レジスタ652内のメツセージ準備完了情
報に応答して、線614上にデータ移動送信回路(XM
IT)8Bに対するバースト要求を生成する。
メツセージ送信終了要素804は、バス616上にRE
LEASE大域副指令を発行して、メツセージ送信の終
わりに、メツセージ・バッファを解放して空きバッファ
待ち行列に入れる。
要求テーブル89は、各ユーザごとに1個の項目を含み
、各ユーザに対する、受信、送信またはEOM要素を活
動化させる状況ビットを含む。
各ユーザごとに、線620を活動化することによりRC
V回路86から要求された待ち行列化大域側指令リター
ン・コードによって受信状況ビットがセットされる(第
10B図ステップ126)。
このビットは、ユーザLIQが空でないことを指示する
。これは、回線622を活動化することにより、待ち行
列が空になったとき待ち行列解除大域別指令リターン・
コードによってリセットされる。
各ユーザごとに、「LOQが空ではない」ビットとr8
f3  XMIT使用中」ビットの送信状況ビットがあ
る。
rLOQが空ではない」ビットは、第1メツセージがユ
ーザ・リンク・アウトバウンド待ち行列に入れられたと
きに、線624を活動化することにより、ENQUEU
E大域副指令リターン・コードからセットされ、ユーザ
・リンク・アウトバウンド待ち行列が空になったとき、
線626を活動化することにより、DEQUEUE大域
副指令リターン・コードからリセットされる。
88  XMIT使用中ビットは、バースト要求がアダ
プタ14によって発行されたとき、XMIT回路86に
よってセットされ、前述のように線628を介して最終
バーストがアダプタに送られるとき、XM工T回路86
によってリセットされる。
復号回路619は太域副指令応答を受け取り、線620
.622.824及び62θのうち該当する線を活動化
させる。
各ユーザごとに、バス300の線632を活動化させる
ことによって、メツセージ送信終了ビットがアダプタ1
4により活動化され、状況OKビットが線633を介し
てメツセージを首尾よく受け取ったときに、アダプタに
よってセットされる。
スケジューラ634は、要求テーブル80を走査し、各
ユーザごとに状況ビットを検査して、ステージUン・サ
ービスを、メツセージ送信(LIQが空ではないビット
がオンであり、XMIT使用中ビットがオフ)、または
メツセージ送信(LOQが空でないビットがオン)、ま
たはメツセージ終了処理(EOMビットと状況OKビッ
トがオン)のいずれにスケジューリングすべきかを決定
する。
メモリ10のi形空間内のステージジン制御ブロック(
SCB)が各ユーザに割り当てられ、ユーザのインバウ
ンド待ち行列とリンク・アウトバウンド待ち行列のQC
B−idを含む。
線842.644及び646は、要求テーブルから読み
取った、LIQが空でないビット、LOQが空でないビ
ット、及びEOMビットによって活動化される。
スケジューラ634は、要求テーブルを走査する。スケ
ジューラ634は、各ユーザごとに、受信、送信、EO
Mの順に状況ビットを読み取って、受信要素を活動化す
るか、送信要素を活動化するか、あるいはEOM要素を
活動化するか、を判定する。そうである場合、スケジュ
ーラ834は、その線642.644、及び648のい
ずれか1本を活動化する。
これにより、SCBフィーダ636が、対応するSCB
ブロックのアドレスを生成する。このアドレスは、バス
638と多重化回路80を介してメモリ・コントローラ
11に送られる。また、メモリから読み取られたSCB
ブロック・データが、レジスタ640に記憶され、線8
42、E344または646が活動化されるまで待って
から、バス641を介して、受信要素600、送信要素
602またはメツセージ終了要素604に供給される。
その動作は、次のとおりである。
RCV要素600は、活動化されると、DEQ大域副指
令を発行する。要求データは、前述のようにレジスタ6
40に記憶されている1、IQ待ち行列のQCB−id
であり6、応答データは、LIQ待ち行列制御ブロック
の頭部フィールドから読み取られるメツセージ・アドレ
スである。
次に、回路600がENQ要求を送信する。要求データ
は、MCCBの内容に応じて、メツセージ・アドレス、
マイクロコード・インバウンド待ち行列QCB−id1
またはリンク・アウトバウンド待ち行列QCB−tdの
いずれかとなる。回路600は、スケジューラ634に
制御を戻す。
メツセージがマイクロコード・インバウンド待ち行列に
入っている場合は、待ち行列から外されて、マイクロコ
ードによって処理され、宛先ユーザのリンク・アウトバ
ウンド待ち行列に入れられることになる。
XMIT要素602は、活動化されると、DEQ大域側
指令を送信する。これは、バス608を介して送信され
る。要求データは、レジスタ640に記憶されているリ
ンク・アウトバウンド待ち行列のQCB−idである。
応答データ・フィールド中で受け取ったメツセージ・ア
ドレスは、バス650を介して送信され、XMIT回路
86の制御ブロック・バッフy512の、メツセージの
送信に使用するユーザ・アドレスに記憶され、SCBブ
ロックにセーブされる。
また、レジスタ652に、そのユーザ向けのメツセージ
が使用可能状態にあることを示す信号がロードされる。
送信要素602は、スケジューラ634に制御を戻す。
アダプタは、バースト要求をそこから開始する。
EOM要素604は、活動化されると、REL大域副指
令を送信する。要求データは、以前にSCBブロックに
セーブされたメツセージ・アドレスである。したがって
、メツセージが首尾良く受信されたとき、メツセージ・
バッファが解放されて空バッフ1待ち行列に入る。EO
M要素604はスケジューラ634に制御を戻し、次の
ユーザが走査される。
E9発明の詳細 な説明したように本発明によれば、高価な中央制御装置
を必要とせずに任意の種類のアダプタ間でメツセージを
交換することができる。
【図面の簡単な説明】
第1図は、本発明を取り入れた通信システムの一般的な
配置図である。 第2図は、メモリの構成を示す図である。 第3図は、アドレッシング・フォーマットによるメモリ
・ページの配置図である。 第4図は、データ・バッフ1の連鎖を示す図である。 第5図は、バッファ制御ブロック・フィールドを示す図
である。 第8図は、メツセージの連鎖を示す図である。 第7図は、待ち行列制御ブロック・フィールドを示す図
である。 第8図は、本発明を取り入れた通信システムの配置の詳
細図である。 第9図は、大城副指令マシン90と大城副指令要求/応
答フォーマットの図である。 第10A図及び第10B図は、大城副指令マシンの論理
回路102と104が、待ち行列大域側指令を処理する
ために実行する諸機能を示す図である。 第11A図と第11B図は、論理回路102と104が
待ち行列解除大域指令を処理するために実行する諸機能
を示す図である。 第12A図と第12B図は、論理回路102と104が
待ち行列解除フリー大域副指令を処理するために実行す
る諸機能を示す図である。 第13A図ないし第13C図は、論理回路102と10
4が解放大域副指令を処理するために実行する諸機能を
示す図である。 第14図は、空きバッファ供給マシン90を示す図であ
る。 第15A図と第15C図は、論理回路206が空きバッ
ファ・ブール200をロードするために実行する諸機能
を示す図である。 第16図は、制御論理回路202が解放大域副指令を処
理するために実行する諸機能を示す図である。 第17図は、受信データ移動回路8E3  RCVを示
す図である。 第18図は、論理回路306と308がデータ・バース
トを受信するために実行する諸機能を示す図である。 第19A図と19B図は、第18図のステップ334で
実行される諸機能の詳細図である。 第20図は、第19図のステップ352.353及び3
54で実行される諸機能の詳細図である。 第21図は、第19図のステップ357ないしは384
で実行される諸機能の詳細図である。 第22図は、送信データ移動回路88  XMITを示
す図である。 第23図は、論理回路50Bと508が宛先ユーザにデ
ータ・バーストを送信するために実行する諸機能を示す
図である。 第24図は、第23図のステップ347で実行される諸
機能を示す図である。 第25図は、560ないしは564ステツプで実行され
る諸機能を示す図である。 第26図は、ステーション・サービス回路88を示す図
である。 出願人  インターナシジナル・ビジネスマシーンズ響
コーボレーシリン 代理人  弁理士  岡  1) 次  生(外1名) メモリl0 1112図 第4図 第1図 、BCB (バッファ制御ブロック) 第5図 第7図 メツセージ待ち行列割−ブロック(MOCB)フォーマ
ット第6図 メツセージの連部と待ち行列化大域WA#
ll令要求/応薔フォーマットl1191i11 第10A図 第12B図 待ち行列解除の実行 第15AIill @+SB図 メツセージ・バフ71の検査/マーク 第14@ 第13C図 535へ 第198図 111119A図 #I20図 @23図 第24図 第26図 565へ

Claims (1)

  1. 【特許請求の範囲】  複数のユーザによって共用され共通バスを介してアク
    セスされるメモリを介して、通信システムにおいて発信
    元ユーザと宛先ユーザとの間でメッセージの転送を行な
    うための機構であって、(a)上記共用されるメモリを
    線形空間と緩衝空間とで構成し、該緩衝空間は容量の等
    しい複数のデータ・バッファに区分され、上記線形空間
    は各々が発信元ユーザまたは宛先ユーザにそれぞれ固定
    的に割り当てられる複数の待ち行列制御ブロックを有し
    、 (b)データ・バッファと該データ・バッファのアドレ
    スと対応するアドレスを有するバッファ制御ブロックと
    を関連付けて、該バッファ制御ブロックは関連するデー
    タ・バッファに関する情報を記憶し、 (c)発信元ユーザからのメッセージを受け取ってこれ
    を緩衝空間から取得された空のデータ・バッファに記憶
    することによってインバウンド・メッセージ待ち行列を
    作成し、次のバッファ・アドレスを表す情報をバッファ
    制御ブロックに書き込み、さらに待ち行列頭部を表す情
    報及び待ち行列末尾を表す情報を対応する発信元ユーザ
    に割り当てられた待ち行列制御ブロックに書き込むこと
    によって、上記データ・バッファを連鎖させて、 (d)発信元ユーザの待ち行列制御ブロックを読み取っ
    て該待ち行列制御ブロックから読み取られた情報を用い
    て宛先ユーザの待ち行列制御ブロックを変更するように
    したことを特徴とするメッセージ転送機構。
JP1271895A 1988-10-28 1989-10-20 メツセージ転送機構 Expired - Lifetime JPH0675262B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP88480067.3 1988-10-28
EP88480067A EP0365731B1 (en) 1988-10-28 1988-10-28 Method and apparatus for transferring messages between source and destination users through a shared memory

Publications (2)

Publication Number Publication Date
JPH02158858A true JPH02158858A (ja) 1990-06-19
JPH0675262B2 JPH0675262B2 (ja) 1994-09-21

Family

ID=8200503

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1271895A Expired - Lifetime JPH0675262B2 (ja) 1988-10-28 1989-10-20 メツセージ転送機構

Country Status (5)

Country Link
US (1) US5333269A (ja)
EP (1) EP0365731B1 (ja)
JP (1) JPH0675262B2 (ja)
CA (1) CA1320590C (ja)
DE (1) DE3850881T2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006216068A (ja) * 1998-12-18 2006-08-17 Unisys Corp コンピュータ・システムの異なるパーティション中で複数のオペレーティング・システムを動作させ、異なるパーティションが共用メモリを介して相互に通信できるようにするコンピュータ・システムおよび方法
JP2009223918A (ja) * 2009-07-07 2009-10-01 Hitachi Ltd 入出力制御装置

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5131082A (en) * 1989-06-09 1992-07-14 International Business Machines Corporation Command delivery for a computing system for transfers between a host and subsystem including providing direct commands or indirect commands indicating the address of the subsystem control block
EP0537401A1 (en) * 1991-10-16 1993-04-21 International Business Machines Corporation Method for exchanging messages between a shared memory and communication adapters using an efficient logical protocol
EP0551789A1 (en) * 1992-01-17 1993-07-21 International Business Machines Corporation Apparatus for recovering lost buffers in a data processing system
EP0571683A1 (en) * 1992-05-26 1993-12-01 International Business Machines Corporation High performance data re-alignment mechanism with multiple buffers in a memory access control device
US5408631A (en) * 1993-03-17 1995-04-18 Unisys Corp. Interface unit circuit with on-chip test simulation
EP0622922B1 (en) * 1993-04-29 2000-11-29 International Business Machines Corporation Method and device of multicasting data in a communications system
JP3507524B2 (ja) * 1993-06-21 2004-03-15 富士通株式会社 事象報告ワード処理機能を持つデータ処理システム
US6298371B1 (en) * 1993-07-08 2001-10-02 Bmc Software, Inc. Method of dynamically adjusting NCP program memory allocation of SNA network
US5617537A (en) * 1993-10-05 1997-04-01 Nippon Telegraph And Telephone Corporation Message passing system for distributed shared memory multiprocessor system and message passing method using the same
WO1995027248A1 (en) * 1994-03-30 1995-10-12 Apple Computer, Inc. Object oriented message passing system and method
US5649092A (en) * 1994-04-21 1997-07-15 Unisys Corporation Fault tolerant apparatus and method for maintaining one or more queues that are shared by multiple processors
US6247064B1 (en) * 1994-12-22 2001-06-12 Unisys Corporation Enqueue instruction in a system architecture for improved message passing and process synchronization
US5630059A (en) * 1995-02-06 1997-05-13 International Business Machines Corporation Expedited message transfer in a multi-nodal data processing system
GB2301751B (en) * 1995-06-02 2000-02-09 Dsc Communications Control message transmission in telecommunications systems
US5694556A (en) * 1995-06-07 1997-12-02 International Business Machines Corporation Data processing system including buffering mechanism for inbound and outbound reads and posted writes
US5666485A (en) * 1995-06-07 1997-09-09 Samsung Electronics Inc. Software driver for a system bus
US5925099A (en) * 1995-06-15 1999-07-20 Intel Corporation Method and apparatus for transporting messages between processors in a multiple processor system
US5909702A (en) * 1995-09-29 1999-06-01 Intel Corporation Memory address translations for programs code execution/relocation
US5907717A (en) * 1996-02-23 1999-05-25 Lsi Logic Corporation Cross-connected memory system for allocating pool buffers in each frame buffer and providing addresses thereof
JP2001514778A (ja) * 1997-03-13 2001-09-11 マーク・エム・ホイットニー メッセージ・キューイング・ファシリティを含むネットワーク・トランザクションをメインフレームからインテリジェントな入出力装置にオフロードするシステム及び方法
EP0866406A1 (en) * 1997-03-19 1998-09-23 Institute of Computer Science ( FORTH) Notification of message arrival in a parallel computer system
US6477584B1 (en) * 1997-03-21 2002-11-05 Lsi Logic Corporation Message FIFO empty early warning method
US5999969A (en) * 1997-03-26 1999-12-07 Unisys Corporation Interrupt handling system for message transfers in network having mixed hardware and software emulated modules
US5983266A (en) * 1997-03-26 1999-11-09 Unisys Corporation Control method for message communication in network supporting software emulated modules and hardware implemented modules
US6563836B1 (en) 1998-03-19 2003-05-13 International Business Machines Corporation Algorithm for dynamic prioritization in a queuing environment
US7020712B1 (en) * 1998-09-30 2006-03-28 Cisco Technology, Inc. Reducing CPU overhead in the forwarding process in an inbound/outbound controller for a router
US6526451B2 (en) * 1998-09-30 2003-02-25 Stmicroelectronics, Inc. Method and network device for creating circular queue structures in shared memory
JP3641147B2 (ja) * 1998-11-18 2005-04-20 富士通株式会社 調停機能付バッファ装置および挿入データ調停方法並びに調停機能付データ挿入装置
JP4109770B2 (ja) * 1998-12-02 2008-07-02 キヤノン株式会社 通信制御方法及び機器
US6408347B1 (en) 1998-12-10 2002-06-18 Cisco Technology, Inc. Integrated multi-function adapters using standard interfaces through single a access point
US7007099B1 (en) * 1999-05-03 2006-02-28 Lucent Technologies Inc. High speed multi-port serial-to-PCI bus interface
US6427180B1 (en) 1999-06-22 2002-07-30 Visteon Global Technologies, Inc. Queued port data controller for microprocessor-based engine control applications
US6976260B1 (en) 1999-09-24 2005-12-13 International Business Machines Corporation Method and apparatus for serializing a message queue in a multiprocessing environment
US7552440B1 (en) * 1999-09-28 2009-06-23 Rockwell Automation Technologies, Inc. Process communication multiplexer
US20020144010A1 (en) * 2000-05-09 2002-10-03 Honeywell International Inc. Communication handling in integrated modular avionics
US6799317B1 (en) * 2000-06-27 2004-09-28 International Business Machines Corporation Interrupt mechanism for shared memory message passing
US6954933B2 (en) * 2000-10-30 2005-10-11 Microsoft Corporation Method and apparatus for providing and integrating high-performance message queues in a user interface environment
US7130916B2 (en) * 2001-02-23 2006-10-31 International Business Machines Corporation Linking frame data by inserting qualifiers in control blocks
US6836480B2 (en) * 2001-04-20 2004-12-28 International Business Machines Corporation Data structures for efficient processing of multicast transmissions
US6684317B2 (en) * 2001-12-21 2004-01-27 Axiowave Networks, Inc. Method of addressing sequential data packets from a plurality of input data line cards for shared memory storage and the like, and novel address generator therefor
US20030185227A1 (en) * 2002-03-29 2003-10-02 International Business Machines Corporation Secondary queue for sequential processing of related queue elements
US8423643B2 (en) * 2003-11-19 2013-04-16 International Business Machines Corporation Autonomic assignment of communication buffers by aggregating system profiles
JP2005165592A (ja) * 2003-12-02 2005-06-23 Matsushita Electric Ind Co Ltd データ転送装置
US7415470B2 (en) * 2004-08-12 2008-08-19 Oracle International Corporation Capturing and re-creating the state of a queue when migrating a session
US9274859B2 (en) * 2006-05-25 2016-03-01 Nvidia Corporation Multi processor and multi thread safe message queue with hardware assistance
US8077974B2 (en) 2006-07-28 2011-12-13 Hewlett-Packard Development Company, L.P. Compact stylus-based input technique for indic scripts
US7949815B2 (en) 2006-09-27 2011-05-24 Intel Corporation Virtual heterogeneous channel for message passing
CN101296130B (zh) * 2008-05-30 2011-04-06 北京同步科技有限公司 一种实现多进程共享端口接收网络通知的系统及其方法
US8611356B2 (en) * 2009-11-13 2013-12-17 Exalt Communications Incorporated Apparatus for ethernet traffic aggregation of radio links
FR3007542A1 (fr) 2013-06-21 2014-12-26 St Microelectronics Grenoble 2 File d'echange de donnees ayant une profondeur illimitee
US10917314B1 (en) * 2018-08-08 2021-02-09 Amazon Technologies, Inc. Distributed health management using peer leases
CN111651377B (zh) * 2020-06-28 2022-05-20 中国人民解放军国防科技大学 一种用于片内报文处理的弹性共享缓存器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5384658A (en) * 1976-12-30 1978-07-26 Fujitsu Ltd Processing system for inter-processor communication
JPS5478631A (en) * 1977-12-05 1979-06-22 Fujitsu Ltd Buffer region control process method

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4015243A (en) * 1975-06-02 1977-03-29 Kurpanek Horst G Multi-processing computer system
JPS5247638A (en) * 1975-10-15 1977-04-15 Toshiba Corp Information processing device
JPS547252A (en) * 1977-06-20 1979-01-19 Hitachi Ltd Program control system
IT1126475B (it) * 1979-12-03 1986-05-21 Honeywell Inf Systems Apparato di comunicazione tra piu' processori
US4392200A (en) * 1980-01-28 1983-07-05 Digital Equipment Corporation Cached multiprocessor system with pipeline timing
US4371929A (en) * 1980-05-05 1983-02-01 Ibm Corporation Multiprocessor system with high density memory set architecture including partitionable cache store interface to shared disk drive memory
US4418382A (en) * 1980-05-06 1983-11-29 Allied Corporation Information exchange processor
US4426679A (en) * 1980-09-29 1984-01-17 Honeywell Information Systems Inc. Communication multiplexer using a random access memory for storing an acknowledge response to an input/output command from a central processor
US4509119A (en) * 1982-06-24 1985-04-02 International Business Machines Corporation Method for managing a buffer pool referenced by batch and interactive processes
US4695943A (en) * 1984-09-27 1987-09-22 Honeywell Information Systems Inc. Multiprocessor shared pipeline cache memory with split cycle and concurrent utilization
US4682284A (en) * 1984-12-06 1987-07-21 American Telephone & Telegraph Co., At&T Bell Lab. Queue administration method and apparatus
US4949240A (en) * 1987-03-13 1990-08-14 Kabushiki Kaisha Toshiba Data storage system having circuitry for dividing received data into sequential wards each stored in storage region identified by chain data
US4807111A (en) * 1987-06-19 1989-02-21 International Business Machines Corporation Dynamic queueing method
US5167020A (en) * 1989-05-25 1992-11-24 The Boeing Company Serial data transmitter with dual buffers operating separately and having scan and self test modes
US5230078A (en) * 1991-08-05 1993-07-20 Motorola Inc. Method for a console to quickly monitor a group

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5384658A (en) * 1976-12-30 1978-07-26 Fujitsu Ltd Processing system for inter-processor communication
JPS5478631A (en) * 1977-12-05 1979-06-22 Fujitsu Ltd Buffer region control process method

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006216068A (ja) * 1998-12-18 2006-08-17 Unisys Corp コンピュータ・システムの異なるパーティション中で複数のオペレーティング・システムを動作させ、異なるパーティションが共用メモリを介して相互に通信できるようにするコンピュータ・システムおよび方法
JP2009223918A (ja) * 2009-07-07 2009-10-01 Hitachi Ltd 入出力制御装置

Also Published As

Publication number Publication date
DE3850881D1 (de) 1994-09-01
JPH0675262B2 (ja) 1994-09-21
EP0365731B1 (en) 1994-07-27
US5333269A (en) 1994-07-26
EP0365731A1 (en) 1990-05-02
DE3850881T2 (de) 1995-03-09
CA1320590C (en) 1993-07-20

Similar Documents

Publication Publication Date Title
JPH02158858A (ja) メツセージ転送機構
US7295565B2 (en) System and method for sharing a resource among multiple queues
US7111092B1 (en) Buffer management technique for a hypertransport data path protocol
US7676597B2 (en) Handling multiple network transport service levels with hardware and software arbitration
US6912604B1 (en) Host channel adapter having partitioned link layer services for an infiniband server system
US5257374A (en) Bus flow control mechanism
US7877481B2 (en) Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory
JP3602089B2 (ja) 通信システム
KR960015862B1 (ko) 데이타 송신방법 및 장치
US7117308B1 (en) Hypertransport data path protocol
CN103810133A (zh) 动态共享读缓冲器管理
EP0249116B1 (en) Method for controlling data transfer buffer
AU3867999A (en) System and method for regulating message flow in a digital data network
EP0381645A2 (en) System and method for communicating between a plurality of processors
US5347514A (en) Processor-based smart packet memory interface
JP2005518578A (ja) コンピュータ・システムの入出力ノードにおけるタグ付けおよび調停メカニズム
US6484207B1 (en) Switching system having interconnects dedicated to store and retrieve data including management of dedicated memory segments allocated when a general memory is depleted
US5572697A (en) Apparatus for recovering lost buffer contents in a data processing system
JP4391819B2 (ja) コンピュータ・システムの入出力ノード
KR920004771B1 (ko) 작업 관련 메세지 흐름 제어방법 및 통신 관리 장치
JPH05227253A (ja) 効率的な論理プロトコルを使用した共用メモリと通信アダプタ間のメッセージ交換方法
US9665519B2 (en) Using a credits available value in determining whether to issue a PPI allocation request to a packet engine
WO1999029071A1 (en) Resource sharing
US7613821B1 (en) Arrangement for reducing application execution based on a determined lack of flow control credits for a network channel
EP1139228A2 (en) An intelligent bus interconnect unit