JPH0675262B2 - メツセージ転送機構 - Google Patents
メツセージ転送機構Info
- Publication number
- JPH0675262B2 JPH0675262B2 JP1271895A JP27189589A JPH0675262B2 JP H0675262 B2 JPH0675262 B2 JP H0675262B2 JP 1271895 A JP1271895 A JP 1271895A JP 27189589 A JP27189589 A JP 27189589A JP H0675262 B2 JPH0675262 B2 JP H0675262B2
- 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.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; 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)
Description
【発明の詳細な説明】 A.産業上の利用分野 本発明は、複数のユーザが共用しているメモリを、ユー
ザがメモリを介して効率よくメッセージを交換できるよ
うに管理するための機構に関するものである。
ザがメモリを介して効率よくメッセージを交換できるよ
うに管理するための機構に関するものである。
B.従来技術及びその課題 通信ネットワーク内で、ネットワーク・ノードに配置さ
れている制御システムは、最低限、基準モデルの最初の
3つの層、すなわち物理層、データ・・リンク制御層及
び経路制御層として定義される機能を実行しなくてはな
らない。
れている制御システムは、最低限、基準モデルの最初の
3つの層、すなわち物理層、データ・・リンク制御層及
び経路制御層として定義される機能を実行しなくてはな
らない。
今後、これらのシステムは、高速リンクを介してますま
す多数のユーザにサービスを提供しなくてはならなくな
る。高速アダプタにより、高速通信リンクに対しサービ
スを行なうことのできるシステムが、欧州特許出願第24
4544号明細書に開示されている。このシステムの中央制
御装置は、中央制御装置メモリのバッファをユーザ・リ
ンクに割り当てる、ネットワーク制御プログラムを実行
する。高速アダプタは、バッファリング手段を備えてい
る。このバッファリング手段中で受信フレームのデータ
部分がアセンブルされて、直接メモリ・アクセス経路を
介して中央制御装置のメモリに記憶される。受信フレー
ムの制御部分は、アダプタ・マイクロプロセッサによっ
て、中央制御装置とアダプタを接続する入出力バスを介
して中央制御装置に供給される。
す多数のユーザにサービスを提供しなくてはならなくな
る。高速アダプタにより、高速通信リンクに対しサービ
スを行なうことのできるシステムが、欧州特許出願第24
4544号明細書に開示されている。このシステムの中央制
御装置は、中央制御装置メモリのバッファをユーザ・リ
ンクに割り当てる、ネットワーク制御プログラムを実行
する。高速アダプタは、バッファリング手段を備えてい
る。このバッファリング手段中で受信フレームのデータ
部分がアセンブルされて、直接メモリ・アクセス経路を
介して中央制御装置のメモリに記憶される。受信フレー
ムの制御部分は、アダプタ・マイクロプロセッサによっ
て、中央制御装置とアダプタを接続する入出力バスを介
して中央制御装置に供給される。
このようにシステムの性能は、2つの要因によって制御
される。すなわち、第1に、メッセージをマイクロコー
ドで管理しなくてはならない。第2に、中央制御装置が
介在せずにアダプタ間でメッセージを直接交換すること
が不可能である。
される。すなわち、第1に、メッセージをマイクロコー
ドで管理しなくてはならない。第2に、中央制御装置が
介在せずにアダプタ間でメッセージを直接交換すること
が不可能である。
本発明の目的は、通信ネットワーク・ノード中で、高価
な中央制御装置が介在しなくても任意の種類のアダプタ
記でメッセージが交換できる機構を実現することにあ
る。
な中央制御装置が介在しなくても任意の種類のアダプタ
記でメッセージが交換できる機構を実現することにあ
る。
本発明の別の目的は、オーバーラン条件が発生する危険
性を伴わずに、受信した一連の短メッセージからなるメ
ッセージが交換できる機構を提供することにある。
性を伴わずに、受信した一連の短メッセージからなるメ
ッセージが交換できる機構を提供することにある。
C.課題を解決するための手段 本発明による機構を用いると、ページに編成されている
メモリを介して、通信システムの発信元ユーザと宛先ユ
ーザの間でメッセージの転送が可能となる。前記メモリ
は、複数のユーザによって共用され、共通バスを介して
アクセスされる。
メモリを介して、通信システムの発信元ユーザと宛先ユ
ーザの間でメッセージの転送が可能となる。前記メモリ
は、複数のユーザによって共用され、共通バスを介して
アクセスされる。
共用メモリは、緩衝空間と線形空間に編成されているこ
とがその特徴である。緩衝空間の各メモリ・ページは、
同じ容量のデータ・バッファを含む。各データ・バッフ
ァごとに、関連するデータ/バッファに関する情報を記
憶するためのバッファ制御ブロックが備わっている。線
形空間は、複数の待ち行列制御ブロック(QCB)を含
み、各発信元ユーザまたは宛先ユーザにそれぞれ1つの
待ち行列制御ブロックが固定して割り当てられている。
とがその特徴である。緩衝空間の各メモリ・ページは、
同じ容量のデータ・バッファを含む。各データ・バッフ
ァごとに、関連するデータ/バッファに関する情報を記
憶するためのバッファ制御ブロックが備わっている。線
形空間は、複数の待ち行列制御ブロック(QCB)を含
み、各発信元ユーザまたは宛先ユーザにそれぞれ1つの
待ち行列制御ブロックが固定して割り当てられている。
インバウンド・メッセージ待ち行列(LIQ)は、次のよ
うにして緩衝空間内に作成される。発信元ユーザからメ
ッセージを受信し、バッファ空間から集められた空いて
いるデータ・バッファにそれらを記憶し、次のバッファ
・アドレスと待ち行列の次のメッセージ・アドレスを示
す情報を書き込んでバッファを連鎖させることによって
作成される。
うにして緩衝空間内に作成される。発信元ユーザからメ
ッセージを受信し、バッファ空間から集められた空いて
いるデータ・バッファにそれらを記憶し、次のバッファ
・アドレスと待ち行列の次のメッセージ・アドレスを示
す情報を書き込んでバッファを連鎖させることによって
作成される。
待ち行列頭部と待ち行列末尾を示す情報は、対応する発
信元ユーザに割り当てられた待ち行列制御ブロックに書
き込まれる。
信元ユーザに割り当てられた待ち行列制御ブロックに書
き込まれる。
発信元ユーザの待ち行列制御ブロックを読み取り、そこ
から読み取った情報を用いて、宛先ユーザの待ち行列制
御ブロックが変更される。その際に、アウトバウンド・
メッセージ待ち行列(LOQ)は、前記アウトバウンド・
メッセージ待ち行列に発信元ユーザのバッファを入れる
ことによって作成される。これは待ち行列の最終バッフ
ァのバッファ制御ブロックを更新することによって行な
われ、待ち行列の内容は、読取り後、宛先ユーザに転送
される。
から読み取った情報を用いて、宛先ユーザの待ち行列制
御ブロックが変更される。その際に、アウトバウンド・
メッセージ待ち行列(LOQ)は、前記アウトバウンド・
メッセージ待ち行列に発信元ユーザのバッファを入れる
ことによって作成される。これは待ち行列の最終バッフ
ァのバッファ制御ブロックを更新することによって行な
われ、待ち行列の内容は、読取り後、宛先ユーザに転送
される。
D.実施例 1)メモリおよびバッファ メモリは線形空間と緩衝空間で構成されている。緩衝空
間の各ページは同じ容量のm+1個のバッファに分割さ
れる。この場合、m個のバッファはデータの記憶専用
で、1つの制御ブロックがm個の制御ブロックに分割さ
れる。1個のバッファ制御ブロックと1個のデータ・バ
ッファ間には固定した関係が存在する。制御ブロックは
バッファ及びメッセージ連鎖情報の記憶専用である。線
形空間は待ち行列制御ブロックで構成されており、各ユ
ーザごとに待ち行列制御ブロックが1個ずつ割り当てら
れる。
間の各ページは同じ容量のm+1個のバッファに分割さ
れる。この場合、m個のバッファはデータの記憶専用
で、1つの制御ブロックがm個の制御ブロックに分割さ
れる。1個のバッファ制御ブロックと1個のデータ・バ
ッファ間には固定した関係が存在する。制御ブロックは
バッファ及びメッセージ連鎖情報の記憶専用である。線
形空間は待ち行列制御ブロックで構成されており、各ユ
ーザごとに待ち行列制御ブロックが1個ずつ割り当てら
れる。
メッセージは発信元ユーザからメモリ・インターフェー
ス22を介して受信され、リンク・インバウンド待ち行列
(LIQ)に入れられる。LIQは、緩衝空間からバッファを
集めて動的に作成され、バッファ及びメッセージ連鎖情
報を対応するバッファ制御ブロックに書き込み、待ち行
列頭部アドレスと待ち行列末尾アドレスをユーザ待ち行
列制御ブロックに書き込んだバッファを連鎖させる。
ス22を介して受信され、リンク・インバウンド待ち行列
(LIQ)に入れられる。LIQは、緩衝空間からバッファを
集めて動的に作成され、バッファ及びメッセージ連鎖情
報を対応するバッファ制御ブロックに書き込み、待ち行
列頭部アドレスと待ち行列末尾アドレスをユーザ待ち行
列制御ブロックに書き込んだバッファを連鎖させる。
中央制御装置は仲介手段によって選択されたユーザから
の要求発生時に、待ち行列化命令、待ち行列解除命令、
及び発行命令を処理するように設計されている。
の要求発生時に、待ち行列化命令、待ち行列解除命令、
及び発行命令を処理するように設計されている。
リンク・インバウンド待ち行列が空き状態でなくなった
とき、メモリ・インターフェース22は中央制御手段に待
ち行列解除命令要求を送る。前記要求は対応するユーザ
待ち行列制御ブロックを指定する。それに応答して、メ
ッセージ・アドレスが宛先ユーザの待ち行列制御ブロッ
クの識別番号と共に供給される。次に、メモリ・インタ
ーフェース22が中央制御手段に待ち行列化要求を発信す
る。前記要求は待ち行列に入れるべきメッセージのアド
レスと宛先ユーザの待ち行列制御ブロックを指定する。
中央制御手段によるこの待ち行列化要求の処理により、
メッセージがアウトバウンド待ち行列に入れられる。メ
ッセージはメモリ・インターフェース22によってアウト
バウンド待ち行列から宛先ユーザに転送される。
とき、メモリ・インターフェース22は中央制御手段に待
ち行列解除命令要求を送る。前記要求は対応するユーザ
待ち行列制御ブロックを指定する。それに応答して、メ
ッセージ・アドレスが宛先ユーザの待ち行列制御ブロッ
クの識別番号と共に供給される。次に、メモリ・インタ
ーフェース22が中央制御手段に待ち行列化要求を発信す
る。前記要求は待ち行列に入れるべきメッセージのアド
レスと宛先ユーザの待ち行列制御ブロックを指定する。
中央制御手段によるこの待ち行列化要求の処理により、
メッセージがアウトバウンド待ち行列に入れられる。メ
ッセージはメモリ・インターフェース22によってアウト
バウンド待ち行列から宛先ユーザに転送される。
第1図は本発明に基づく機構を取り入れた通信システム
のブロック・ダイヤグラムである。
のブロック・ダイヤグラムである。
ボックス10はデータ記憶メモリ(共用メモリ)を表す。
このメモリは第2図に示すように編成され、メッセージ
転送の性能と融通性をシステムに与える。メモリは通信
アダプタ(または単にアダプタ)14に接続された複数の
ユーザ12によって共用される。アダプタ14は特定の物理
的機能及びデータ・リンク制御層機能を実行する。すな
わち上位層との間でメッセージ・バーストが交換され
る。各アダプタは最低1人のユーザに接続される。この
システムにより、アダプタに接続された1人のユーザ
が、同じアダプタまたは別のアダプタに接続された別の
ユーザにメッセージを転送することが可能となる。
このメモリは第2図に示すように編成され、メッセージ
転送の性能と融通性をシステムに与える。メモリは通信
アダプタ(または単にアダプタ)14に接続された複数の
ユーザ12によって共用される。アダプタ14は特定の物理
的機能及びデータ・リンク制御層機能を実行する。すな
わち上位層との間でメッセージ・バーストが交換され
る。各アダプタは最低1人のユーザに接続される。この
システムにより、アダプタに接続された1人のユーザ
が、同じアダプタまたは別のアダプタに接続された別の
ユーザにメッセージを転送することが可能となる。
最低1個の特定のマイクロプロセッサ・アダプタ(μP
アダプタ)16が設けられ、初期設定、エラー処理、メッ
セージ経路指定テーブルのセットアップなどの諸機能を
実行するマイクロプロセッサ(μP)18に接続されてい
る。
アダプタ)16が設けられ、初期設定、エラー処理、メッ
セージ経路指定テーブルのセットアップなどの諸機能を
実行するマイクロプロセッサ(μP)18に接続されてい
る。
本発明によるメモリ管理機構20は、共用メモリ10を介し
てメッセージ転送を制御するデータ記憶インターフェー
ス(DSI)22を備え、またメモリ・バス24、DSI中央制御
システム(DCS)26及びバス・アクセス・アービタ28も
含んでいる。インターフェース30が設けられ、機構20を
介して共用メモリにマイクロプロセッサ・アダプタを接
続している。
てメッセージ転送を制御するデータ記憶インターフェー
ス(DSI)22を備え、またメモリ・バス24、DSI中央制御
システム(DCS)26及びバス・アクセス・アービタ28も
含んでいる。インターフェース30が設けられ、機構20を
介して共用メモリにマイクロプロセッサ・アダプタを接
続している。
データ記憶インターフェース(DSI)22と30はすべて各
装置(通信アダプタまたはマイクロプロセッサ・アダプ
タ)を共用メモリ10とインターフェースさせるための機
構を有する。このシステムは、アダプタ内に全メッセー
ジを緩衝記憶することなしに、接続アダプタ16と14の要
求に応じて共用メモリと共に優先的データ移動を行なう
1組のハードウェア手段である。
装置(通信アダプタまたはマイクロプロセッサ・アダプ
タ)を共用メモリ10とインターフェースさせるための機
構を有する。このシステムは、アダプタ内に全メッセー
ジを緩衝記憶することなしに、接続アダプタ16と14の要
求に応じて共用メモリと共に優先的データ移動を行なう
1組のハードウェア手段である。
機構20の各部分の機能と構造については後で詳しく説明
する。まず機構の性能を向上させるためにメモリ10をど
う編成すればよいかについて説明する。
する。まず機構の性能を向上させるためにメモリ10をど
う編成すればよいかについて説明する。
データ記憶メモリ10は、基本的に異なる2つの方法で編
成された2種類の情報を保持する。
成された2種類の情報を保持する。
各アダプタの動作には、隣接リンク・ステーションとの
間で交換すべきメッセージと制御ブロックが必要であ
る。HDLCプロトコルを使用してデータを交換する場合
は、プラグで分離されたHDLC(高水準データ・リンク制
御)フレームを用いてメッセージが作成される。
間で交換すべきメッセージと制御ブロックが必要であ
る。HDLCプロトコルを使用してデータを交換する場合
は、プラグで分離されたHDLC(高水準データ・リンク制
御)フレームを用いてメッセージが作成される。
したがって、メモリ10は第2図のように区分され、線形
空間10−1と緩衝空間10−2に分けられる。線形空間10
−1の部分41は、マイクロコード命令とマイクロコード
・データの記憶専用である。線形空間10−1の部分42
は、待ち行列制御ブロックQCB、QCB状況制御ブロック、
サービス・テーブルなどの制御ブロックの記憶専用であ
る。
空間10−1と緩衝空間10−2に分けられる。線形空間10
−1の部分41は、マイクロコード命令とマイクロコード
・データの記憶専用である。線形空間10−1の部分42
は、待ち行列制御ブロックQCB、QCB状況制御ブロック、
サービス・テーブルなどの制御ブロックの記憶専用であ
る。
緩衝空間10−2は、バッファと、対応するバッファ制御
ブロックを含む。
ブロックを含む。
動的データ記憶の実施態様で高速ページング・アドレッ
シンク・モードの利点を活用するため、メモリは整数個
のバッファを含む論理ページに編成される。
シンク・モードの利点を活用するため、メモリは整数個
のバッファを含む論理ページに編成される。
所与のメッセージに属するデータは、1つまたは複数の
連鎖されたデータ・バッファに記憶される。メッセージ
は互いに連鎖され、動的に作成されるメッセージ待ち行
列に入れられる。各データ・バッファは、制御バッファ
内に対応するバッファ制御ブロック(BCB)を有する。
連鎖されたデータ・バッファに記憶される。メッセージ
は互いに連鎖され、動的に作成されるメッセージ待ち行
列に入れられる。各データ・バッファは、制御バッファ
内に対応するバッファ制御ブロック(BCB)を有する。
第3図は、m+1個のバッファすなわちバッファ0から
バッファmまでを含むあるページiを示す。1番目のバ
ッファすなわちバッファ0は、他のバッファ1ないしm
に関連するバッファ制御ブロック(BCB)を保持する。
バッファmまでを含むあるページiを示す。1番目のバ
ッファすなわちバッファ0は、他のバッファ1ないしm
に関連するバッファ制御ブロック(BCB)を保持する。
論理ページのサイズは、制御ブロック0の占有度を最適
化するように選択する。このサイズは、論理ページのサ
イズを超えることはない。様々な動的メモリの実施態様
によって提供される高速ページング・モード・アクセス
を活用するには、バッファ制御ブロックを、対応するデ
ータ・バッファと同じ物理ページに記憶しなくてはなら
ない。こうすると、データ及び制御情報を連続的に読み
取ったり更新したりするとき、アクセス時間が大幅に短
縮される。論理ページのサイズは、メモリの固定した特
性である。
化するように選択する。このサイズは、論理ページのサ
イズを超えることはない。様々な動的メモリの実施態様
によって提供される高速ページング・モード・アクセス
を活用するには、バッファ制御ブロックを、対応するデ
ータ・バッファと同じ物理ページに記憶しなくてはなら
ない。こうすると、データ及び制御情報を連続的に読み
取ったり更新したりするとき、アクセス時間が大幅に短
縮される。論理ページのサイズは、メモリの固定した特
性である。
本発明の代表的実施態様では、1論理ページは、512個
の4バイト・ワードで構成され、したがって論理ページ
・アドレスは、512ワードの境界に対応する。1論理ペ
ージは、7個のデータ・バッファと1個の制御バッファ
を含み、各バッファは、256バイトからなる。所与の論
理ページの制御バッファは、この論理ページの7個のデ
ータ・バッファのバッファ制御ブロック(BCB)を含
む。第3図に示すように、データ・バッファのアドレス
とその対応するBCBのアドレスとの間には、固定した単
純な関係がある。
の4バイト・ワードで構成され、したがって論理ページ
・アドレスは、512ワードの境界に対応する。1論理ペ
ージは、7個のデータ・バッファと1個の制御バッファ
を含み、各バッファは、256バイトからなる。所与の論
理ページの制御バッファは、この論理ページの7個のデ
ータ・バッファのバッファ制御ブロック(BCB)を含
む。第3図に示すように、データ・バッファのアドレス
とその対応するBCBのアドレスとの間には、固定した単
純な関係がある。
データ・バッファ・アドレスは、nビットを含む論理ペ
ージ・アドレス・フィールドを有する。nビットとは、
所与のページをアドレスするためのp0ないしp(n−
1)である。データ・バッファ・アドレスはさらに、b
0,b1,b2の3ビット(そのページが7個のデータ・バッ
ファを含むと想定した場合)を含むデータ・バッファ・
アドレス・フィールド及びデータ・バッファ・ワード・
アドレス・フィールドを有する。
ージ・アドレス・フィールドを有する。nビットとは、
所与のページをアドレスするためのp0ないしp(n−
1)である。データ・バッファ・アドレスはさらに、b
0,b1,b2の3ビット(そのページが7個のデータ・バッ
ファを含むと想定した場合)を含むデータ・バッファ・
アドレス・フィールド及びデータ・バッファ・ワード・
アドレス・フィールドを有する。
対応するバッファ制御ブロック(BCB)アドレスは、同
じ論理ページ・アドレス・フィールド、0に設定される
3個の制御バッファ・アドレス・ビット、対応するBCB
をアドレスするb0,b1,b2の各ビット、ならびにBCBが8
ワード構成の場合は3ビットからなる、BCBワード・ア
ドレスを含む。したがって、バッファ制御ブロックのア
ドレスは、対応するデータ・バッファ・アドレスから容
易に算出でき、またその逆も可能である。
じ論理ページ・アドレス・フィールド、0に設定される
3個の制御バッファ・アドレス・ビット、対応するBCB
をアドレスするb0,b1,b2の各ビット、ならびにBCBが8
ワード構成の場合は3ビットからなる、BCBワード・ア
ドレスを含む。したがって、バッファ制御ブロックのア
ドレスは、対応するデータ・バッファ・アドレスから容
易に算出でき、またその逆も可能である。
本発明の別の実施例では、m個のデータ・バッファのm
個の制御ブロック(BCB)を含む制御バッファを、独立
した第1のアクセス・メモリ内に配置することができ
る。ただし、データ・バッファ・アドレスとその対応バ
ッファ制御ブロックBCB・アドレスとの間に単純なアド
レス関係が存在することを条件とする。緩衝空間10−2
に待ち行列を作成するため、可変長のメッセージを記憶
できるように可変数のデータ・バッファを連鎖する。第
4図にバッファの連鎖を概略的に示す。メッセージは複
数のデータ・バッファに配置することができる。データ
・バッファに関連する各バッファ制御ブロック(BCB)
は、次のバッファ・アドレスを含む。典型的実施態様で
はバッファ制御ブロックは最低2ワードの記憶容量を有
する。その内容を第5図に示す。バッファ制御ブロック
は、メッセージ連鎖制御ブロック(MCCB)とバッファ連
鎖制御ブロック(BCCB)から構成される。MCCBは待ち行
列内のメッセージ連鎖に関する情報を含み、BCCBはメッ
セージ内のバッファ連鎖に関する情報を含む。
個の制御ブロック(BCB)を含む制御バッファを、独立
した第1のアクセス・メモリ内に配置することができ
る。ただし、データ・バッファ・アドレスとその対応バ
ッファ制御ブロックBCB・アドレスとの間に単純なアド
レス関係が存在することを条件とする。緩衝空間10−2
に待ち行列を作成するため、可変長のメッセージを記憶
できるように可変数のデータ・バッファを連鎖する。第
4図にバッファの連鎖を概略的に示す。メッセージは複
数のデータ・バッファに配置することができる。データ
・バッファに関連する各バッファ制御ブロック(BCB)
は、次のバッファ・アドレスを含む。典型的実施態様で
はバッファ制御ブロックは最低2ワードの記憶容量を有
する。その内容を第5図に示す。バッファ制御ブロック
は、メッセージ連鎖制御ブロック(MCCB)とバッファ連
鎖制御ブロック(BCCB)から構成される。MCCBは待ち行
列内のメッセージ連鎖に関する情報を含み、BCCBはメッ
セージ内のバッファ連鎖に関する情報を含む。
メッセージ連鎖制御ブロック(MCCB)は少なくとも次の
メッセージのアドレスとメッセージ・バイト・カウント
を含む。
メッセージのアドレスとメッセージ・バイト・カウント
を含む。
バッファ連鎖制御ブロック(BCCB)は次のバッファ・ア
ドレスとバッファ・バイト・カウントを含む。必要に応
じて交換処理の制御に他のフィールドを使用することも
できる。
ドレスとバッファ・バイト・カウントを含む。必要に応
じて交換処理の制御に他のフィールドを使用することも
できる。
2)メッセージ連鎖およびバッファ連鎖 第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
進コード「FF」を含む。
メッセージは複数のバッファ中で連鎖される。第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
進コード「FF」を含む。
第1メッセージ、第2メッセージ及び最終メッセージを
含む第2及び第3バッファのメッセージ連鎖制御ブロッ
クは、次のメッセージ・アドレスとして16進コード「0
0」を含むこともできるが、この情報は意味がないので
どんな値でもよい。
含む第2及び第3バッファのメッセージ連鎖制御ブロッ
クは、次のメッセージ・アドレスとして16進コード「0
0」を含むこともできるが、この情報は意味がないので
どんな値でもよい。
これらのメッセージを含む待ち行列の待ち行列制御ブロ
ックは、その頭部フィールドに第1メッセージの第1バ
ッファ1−1のアドレスを含み、その末尾フィールドに
最終メッセージの第1バッファ3−1のアドレスを含
む。
ックは、その頭部フィールドに第1メッセージの第1バ
ッファ1−1のアドレスを含み、その末尾フィールドに
最終メッセージの第1バッファ3−1のアドレスを含
む。
第5図に示すように、バッファ連鎖制御ブロック(BCC
B)は、第1ワードを第2ワードから成る。第1ワード
は、バッファ連鎖に関するものであり、第2ワードは、
必要に応じてデータ交換時に検査を行なうための制御デ
ータを記憶するのに使用できる。
B)は、第1ワードを第2ワードから成る。第1ワード
は、バッファ連鎖に関するものであり、第2ワードは、
必要に応じてデータ交換時に検査を行なうための制御デ
ータを記憶するのに使用できる。
次のバッファ・アドレス・フィールド(2バイト)は、
メッセージ内の次のバッファのアドレスを指示する。現
在のバッファがメッセージ内の最終バッファである場合
には、このフィールドは、FFFFに設定される。この次の
バッファ・アドレス・フィールドは、64ワード境界を示
す。すなわち、このフィールドには、次のバッファの第
1ワードをアドレスするため、000000が右寄せで埋め込
まれる。
メッセージ内の次のバッファのアドレスを指示する。現
在のバッファがメッセージ内の最終バッファである場合
には、このフィールドは、FFFFに設定される。この次の
バッファ・アドレス・フィールドは、64ワード境界を示
す。すなわち、このフィールドには、次のバッファの第
1ワードをアドレスするため、000000が右寄せで埋め込
まれる。
バッファ・バイト・カウント・フィールド(1バイト)
は、バッファ内のバイト数をバッファ・バイト0から始
まる値で指示する。
は、バッファ内のバイト数をバッファ・バイト0から始
まる値で指示する。
オフセット・フィールドは、バッファ内の実データ部分
が開始する場所を指示する。メッセージにヘッダ部が存
在する場合は、バッファ内のメッセージ・アドレス0に
記憶される。
が開始する場所を指示する。メッセージにヘッダ部が存
在する場合は、バッファ内のメッセージ・アドレス0に
記憶される。
メッセージ連鎖制御ブロック(MCCB)は、第5図のとお
りである。次のメッセージ・アドレス・フィールドは、
次のメッセージの第1データ・バッファのアドレスを指
示する。現在のメッセージが最終メッセージである場合
には、次のメッセージ・アドレス・フィールドがFFFFに
設定される。次のメッセージ・アドレスは、64ワード境
界を示す。すなわち、このアドレスには、次のメッセー
ジの次のバッファの第1ワードをアドレスするため、00
0000が右寄せで埋め込まれる。
りである。次のメッセージ・アドレス・フィールドは、
次のメッセージの第1データ・バッファのアドレスを指
示する。現在のメッセージが最終メッセージである場合
には、次のメッセージ・アドレス・フィールドがFFFFに
設定される。次のメッセージ・アドレスは、64ワード境
界を示す。すなわち、このアドレスには、次のメッセー
ジの次のバッファの第1ワードをアドレスするため、00
0000が右寄せで埋め込まれる。
メッセージ・バイト・カウント・フィールドは、第1デ
ータ・バッファのバッファ・オフセット値(が存在する
場合にそれ)を含むメッセージ内の総バイト数を指示す
る。メッセージ・バイト・カウントの最大値は、64キロ
バイトである。
ータ・バッファのバッファ・オフセット値(が存在する
場合にそれ)を含むメッセージ内の総バイト数を指示す
る。メッセージ・バイト・カウントの最大値は、64キロ
バイトである。
メッセージ・パラメータ/状況有効ビットVは、メッセ
ージ・パラメータ/状況フィールドの有効化を行なう。
ージ・パラメータ/状況フィールドの有効化を行なう。
メッセージ・パラメータ/状況フィールドはメッセージ
に関する情報を保持する。
に関する情報を保持する。
したがってメモリ10の緩衝空間10−2内で、各種の待ち
行列が多数のバッファ中に作成される。バッファの数は
必要とされる待ち行列の記憶容量に応じて可変である。
行列が多数のバッファ中に作成される。バッファの数は
必要とされる待ち行列の記憶容量に応じて可変である。
3)待ち行列制御ブロック 最大可能待ち行列数はユーザの数に依存するもので既知
であり、待ち行列制御ブロックが線形空間10−1の要素
42内に設けられる。これは緩衝空間10−2にそのバッフ
ァが収納されている各待ち行列と関連付けられている。
待ち行列制御ブロックは待ち行列頭部のアドレス(待ち
行列の第1バッファのアドレス)と待ち行列末尾のアド
レス(待ち行列の最終メッセージのアドレス)を記憶
し、また後で説明するように追加情報も含むことができ
る。
であり、待ち行列制御ブロックが線形空間10−1の要素
42内に設けられる。これは緩衝空間10−2にそのバッフ
ァが収納されている各待ち行列と関連付けられている。
待ち行列制御ブロックは待ち行列頭部のアドレス(待ち
行列の第1バッファのアドレス)と待ち行列末尾のアド
レス(待ち行列の最終メッセージのアドレス)を記憶
し、また後で説明するように追加情報も含むことができ
る。
空きバッファ待ち行列(FBQ)はメモリ内で所与の時間
に利用可能なすべてのバッファの待ち行列である。各メ
ッセージが1つ以上のバッファを含むものと仮定した場
合、前に説明したのと同様に、それらのバッファはバッ
ファ制御ブロックによって連鎖される。本発明の好まし
い実施例では、空きバッファは、そのMCCBブロック内の
次のバッファ・アドレスによって連鎖される。
に利用可能なすべてのバッファの待ち行列である。各メ
ッセージが1つ以上のバッファを含むものと仮定した場
合、前に説明したのと同様に、それらのバッファはバッ
ファ制御ブロックによって連鎖される。本発明の好まし
い実施例では、空きバッファは、そのMCCBブロック内の
次のバッファ・アドレスによって連鎖される。
空きバッファ待ち行列制御ブロック(FBQCB)に関連す
る空きバッファ待ち行列は、初期設定時に作成される。
次に後で図9に関して説明するように、それらの待ち行
列がいわゆるグローバル命令マシンによって作成され
る。
る空きバッファ待ち行列は、初期設定時に作成される。
次に後で図9に関して説明するように、それらの待ち行
列がいわゆるグローバル命令マシンによって作成され
る。
このマシンは、通信アダプタやマイクロコード・アダプ
タなどのユーザから要求があったとき、次の命令を実行
する。それらの命令は、次のとおりである。
タなどのユーザから要求があったとき、次の命令を実行
する。それらの命令は、次のとおりである。
ENQUEUE: データ記憶待ち行列にメッセージを入れる。
DEQUEUE: データ記憶待ち行列からメッセージを外し、
要求元にメッセージのバッファ・アドレスを戻す。
要求元にメッセージのバッファ・アドレスを戻す。
DEQ FREE: 空きバッファ待ち行列からバッファを外
し、要求元にそのアドレスを戻す。を戻す。
し、要求元にそのアドレスを戻す。を戻す。
LEASE: 空きバッファ待ち行列から以前に外された空き
バッファのアドレスを要求元に即時戻す。
バッファのアドレスを要求元に即時戻す。
RELEASE: あるメッセージに属するすべてのバッファを
空きバッファ待ち行列に入れて、解放する。
空きバッファ待ち行列に入れて、解放する。
空きバッファは、DEQ FREEグローバル命令を発行する
ことにより空きバッファ供給マシンによって待ち行列か
ら外される。次に、そのアドレスは、要求元に与えるべ
きバッファが利用可能となるように、LEASEグローバル
命令によって、256個など多数の空きバッファ・アドレ
スを含むことのできるランダム・アクセス・メモリに直
ちに記憶される。
ことにより空きバッファ供給マシンによって待ち行列か
ら外される。次に、そのアドレスは、要求元に与えるべ
きバッファが利用可能となるように、LEASEグローバル
命令によって、256個など多数の空きバッファ・アドレ
スを含むことのできるランダム・アクセス・メモリに直
ちに記憶される。
好ましい実施例では、空きバッファ待ち行列は、最高64
000個までの空きバッファ、すなわち最高16メガバイト
までの緩衝データを保持することができる。空きバッフ
ァ待ち行列管理機能が、2つの容量しきい値(制限バッ
ファしきい値及び臨界バッファしきい値)を提供する。
後者の場合、処理促進の場合に限って、LEASEグローバ
ル命令が受け入れられる。
000個までの空きバッファ、すなわち最高16メガバイト
までの緩衝データを保持することができる。空きバッフ
ァ待ち行列管理機能が、2つの容量しきい値(制限バッ
ファしきい値及び臨界バッファしきい値)を提供する。
後者の場合、処理促進の場合に限って、LEASEグローバ
ル命令が受け入れられる。
空間10−2内で作成される待ち行列には2種類ある。こ
れらは、 1.通常グローバル命令によって扱われる行列であって、
メッセージ待ち行列と呼ばれる待ち行列すなわち、マイ
クロコード・インバウンド待ち行列MIQおよびリンク・
アウトバウンド待ち行列LOQ、及び 2.入力メッセージを緩衝記憶するために作成されるリン
ク・インバウンド待ち行列LIQである。
れらは、 1.通常グローバル命令によって扱われる行列であって、
メッセージ待ち行列と呼ばれる待ち行列すなわち、マイ
クロコード・インバウンド待ち行列MIQおよびリンク・
アウトバウンド待ち行列LOQ、及び 2.入力メッセージを緩衝記憶するために作成されるリン
ク・インバウンド待ち行列LIQである。
待ち行列は、線形空間10−1にある4ワードからなる待
ち行列制御ブロックQCBによって識別される。グローバ
ル命令は、QCB識別子QCB idを使って、それらQCBの1
つを選択する。QCBアドレスは、次のように算出され
る。
ち行列制御ブロックQCBによって識別される。グローバ
ル命令は、QCB識別子QCB idを使って、それらQCBの1
つを選択する。QCBアドレスは、次のように算出され
る。
−QCB idには、4ワード境界を示すため、00が右寄せ
で埋め込まれる。
で埋め込まれる。
− QCB基準アドレスは、初期設定時に設定され、やは
り4ワード境界を示す。
り4ワード境界を示す。
例として、第7図にQCB id書式と待ち行列制御ブロッ
ク書式を示す。
ク書式を示す。
最初のビット0及び1は、待ち行列の種類を示す。
− 00は、1つのアウトバウンド待ち行列を示す(ビッ
ト0=0)。
ト0=0)。
− 01は、1つのマイクロコード・インバウンド待ち行
列を示す。
列を示す。
− 11は、1つのリンク・インバウンド待ち行列を示
す。
す。
− ビット2−5は、16個の待ち行列のうちの1つを選
択する。
択する。
16個のマイクロコード待ち行列グループのそれぞれに、
そのグループ内の各待ち行列ごとに1ビットを保持する
サービス・テーブルが対応しており、その待ち行列が活
動状態になっていて、グループ内の第1待ち行列が活動
状態になったときにマイクロプロセッサへの割込みを許
すかどうかを指示する。
そのグループ内の各待ち行列ごとに1ビットを保持する
サービス・テーブルが対応しており、その待ち行列が活
動状態になっていて、グループ内の第1待ち行列が活動
状態になったときにマイクロプロセッサへの割込みを許
すかどうかを指示する。
QCB idビット6−12は、所与のグループ内の128個の待
ち行列にうちの1つを決定する。
ち行列にうちの1つを決定する。
QCB idは、初期設定時に、待ち行列ユーザに割り当て
られる。
られる。
第7図のメッセージ待ち行列制御ブロック(MQCB)の書
式は、次のとおりである。
式は、次のとおりである。
− 待ち行列頭部フィールド: 待ち行列内の第1メッ
セージの第1バッファのアドレス。
セージの第1バッファのアドレス。
− 待ち行列末尾フィールド:待ち行列内の最終メッセ
ージの第1バッファのアドレス。
ージの第1バッファのアドレス。
− 待ち行列バッファ・カウント:待ち行列内のメッセ
ージを構成するバッファの総数。
ージを構成するバッファの総数。
− 待ち行列状況:次の各種の標識を含む。
・ 本発明が空である ・ 待ち行列しきい値に達した ・ 最大バッファ・カウントに達した ・ アクション・フィールドが有効 − バッファしきい値: ENQUEUEグローバル命令実行
時に、「待ち行列しきい値標識」が待ち行列状況フィー
ルド中に設定され、またバッファ・カウントがバッファ
しきい値より大きい場合に、ENQUEUEリターン・コード
中に戻される。
時に、「待ち行列しきい値標識」が待ち行列状況フィー
ルド中に設定され、またバッファ・カウントがバッファ
しきい値より大きい場合に、ENQUEUEリターン・コード
中に戻される。
− 最大バッファ・カウント:ENQUEUE実行時に、新バッ
ファ・カウントが最大バッファ・カウントと比較され
る。この値を超えた場合、ENQUEUE命令が拒絶され、バ
ッファ・カウントは不変のままとなり、「最大バッファ
・カウントに達した」という標識が状況フィールド中で
設定され、ENQUEUEリターン・コード中で戻される。
ファ・カウントが最大バッファ・カウントと比較され
る。この値を超えた場合、ENQUEUE命令が拒絶され、バ
ッファ・カウントは不変のままとなり、「最大バッファ
・カウントに達した」という標識が状況フィールド中で
設定され、ENQUEUEリターン・コード中で戻される。
− アクション: アウトバウンド待ち行列が活動状態
になったときに送られるステーション・サービス・ウェ
ークアップ・メッセージを含む。アクションは、「アク
ション・フィールドが有効」という状況標識によって有
効化される。
になったときに送られるステーション・サービス・ウェ
ークアップ・メッセージを含む。アクションは、「アク
ション・フィールドが有効」という状況標識によって有
効化される。
第7図の空きバッファ待ち行列制御ブロック(FQCB)の
書式は、次のとおりである。
書式は、次のとおりである。
− 待ち行列頭部:待ち行列内の第1メッセージの第1
バッファのアドレス。
バッファのアドレス。
− 待ち行列末尾:待ち行列内の最終メッセージの第1
バッファのアドレス。
バッファのアドレス。
− 待ち行列バッファ・カウント:空きバッファ待ち行
列内のバッファの総数。
列内のバッファの総数。
− 待ち行列状況:次の各種の標識を含む。
・ FBQ(空きバッファ待ち行列)が空である。
・ 制限バッファしきい値に達した ・ 臨界バッファしきい値に達した ・ アクション・フィールドが有効 − 制限バッファしきい値: DEQ FREEグローバル命令が空きバッファ供給マシンに
よって実行されるとき、「制限バッファしきい値に達し
た」標識が待ち行列状況フィールド中で設定され、また
バッファ・カウントが制限バッファしきい値より小さい
場合に、DEQ FREEリターン・コード中で戻される。
よって実行されるとき、「制限バッファしきい値に達し
た」標識が待ち行列状況フィールド中で設定され、また
バッファ・カウントが制限バッファしきい値より小さい
場合に、DEQ FREEリターン・コード中で戻される。
− 臨界バッファしきい値:DEQ FREE大域命令が空きバ
ッファ供給マシンによって実行されるとき、「臨界バッ
ファしきい値に達した」標識が状況フィールド中で設定
され、またバッファ・カウントが臨界バッファしきい値
より小さい場合に、DEQ FREEリターン・コード中で戻
される。
ッファ供給マシンによって実行されるとき、「臨界バッ
ファしきい値に達した」標識が状況フィールド中で設定
され、またバッファ・カウントが臨界バッファしきい値
より小さい場合に、DEQ FREEリターン・コード中で戻
される。
− アクション: 臨界状態の発生時に送られる事象を
(所定の待ち行列中に)含む。
(所定の待ち行列中に)含む。
アクションは、「アクション・フィールドが有効」とい
う状況標識によって有効化される。
う状況標識によって有効化される。
16個のインバウンド待ち行列グループのそれぞれについ
て、データ記憶線形空間1中にサービス・テーブルがあ
る。このサービス・テーブルは、そのグループ内の128
個の待ち行列のそれぞれの活動状況を保持する。16個の
サービス・テーブルが、初期設定時に提供されるサービ
ス・テーブル基準アドレスで始まる64個の(各サービス
・テーブルにつき4個)の連続ワード中にある。この基
準アドレスは、64ワード境界を示さなくてはならない。
て、データ記憶線形空間1中にサービス・テーブルがあ
る。このサービス・テーブルは、そのグループ内の128
個の待ち行列のそれぞれの活動状況を保持する。16個の
サービス・テーブルが、初期設定時に提供されるサービ
ス・テーブル基準アドレスで始まる64個の(各サービス
・テーブルにつき4個)の連続ワード中にある。この基
準アドレスは、64ワード境界を示さなくてはならない。
サービス・テーブルの取扱いは、次のとおりである。
− 第1ENQUEUEが所与のグループの所与のマイクロコー
ド・インバウンド待ち行列に対して実行されるとき、つ
まり、その待ち行列が空でなくなったとき、それに対応
するビットがそのグループのサービス・テーブル中で設
定される − 最終メッセージが所与のグループの所与のマイクロ
コード・インバウンド待ち行列MIQから外されるとき、
つまりその待ち行列が空になったとき、それに対応する
ビットがそのグループのサービス・テーブル中でリセッ
トされる。
ド・インバウンド待ち行列に対して実行されるとき、つ
まり、その待ち行列が空でなくなったとき、それに対応
するビットがそのグループのサービス・テーブル中で設
定される − 最終メッセージが所与のグループの所与のマイクロ
コード・インバウンド待ち行列MIQから外されるとき、
つまりその待ち行列が空になったとき、それに対応する
ビットがそのグループのサービス・テーブル中でリセッ
トされる。
− 所与のグループ内の第1待ち行列が活動状態になっ
たとき、つまりそのグループのサービス・テーブルがも
はやオール・ゼロを含まないとき、マイクロプロセッサ
に対する割込みを発生させ、そのサービス・テーブルに
関する割込み要求を提示するために、割込み制御装置に
信号が送られる。
たとき、つまりそのグループのサービス・テーブルがも
はやオール・ゼロを含まないとき、マイクロプロセッサ
に対する割込みを発生させ、そのサービス・テーブルに
関する割込み要求を提示するために、割込み制御装置に
信号が送られる。
第8図は、インターフェース22、中央制御システム(DC
S)26及びプロセッサ・インターフェース30の全体的配
置図である。これらは、多重化回路80、82及び84を介し
てバス24に接続される。これらの多重化回路により、ア
ービタ28の制御下で選択された装置22、26または30によ
り、論理エンティティをバス上に置いたり、バスから受
け取ったりすることもできる。共用メモリ10へのアクセ
スは、通常どおり記憶制御装置11によって制御される。
S)26及びプロセッサ・インターフェース30の全体的配
置図である。これらは、多重化回路80、82及び84を介し
てバス24に接続される。これらの多重化回路により、ア
ービタ28の制御下で選択された装置22、26または30によ
り、論理エンティティをバス上に置いたり、バスから受
け取ったりすることもできる。共用メモリ10へのアクセ
スは、通常どおり記憶制御装置11によって制御される。
インターフェース22は、データ移動制御手段86を有す
る。制御手段86は、アダプタ14に接続されたユーザが受
け取るデータ・メッセージを連鎖し、それをリンク・イ
ンバウンド待ち行列に入れ、リンク・アウトバウンド待
ち行列から外されたデータ・メッセージを宛先ユーザに
送る。
る。制御手段86は、アダプタ14に接続されたユーザが受
け取るデータ・メッセージを連鎖し、それをリンク・イ
ンバウンド待ち行列に入れ、リンク・アウトバウンド待
ち行列から外されたデータ・メッセージを宛先ユーザに
送る。
インターフェース22はまた、データ移動手段86と共働
し、中央制御システム26内のグローバル命令(グローバ
ル・オーダ)マシン(GOM)90とインターフェースをと
るステーション・サービス手段88及び要求テーブル89を
含む。要求テーブル89は、後で第26図に関して説明する
ように、データ転送を制御するため、リンク・インバウ
ンド及びアウトバウンド待ち行列状況に関する情報を保
持する。
し、中央制御システム26内のグローバル命令(グローバ
ル・オーダ)マシン(GOM)90とインターフェースをと
るステーション・サービス手段88及び要求テーブル89を
含む。要求テーブル89は、後で第26図に関して説明する
ように、データ転送を制御するため、リンク・インバウ
ンド及びアウトバウンド待ち行列状況に関する情報を保
持する。
中央制御システム(DCS)26はグローバル命令マシン90
を含む、このマシン90は、要求元インターフェース22ま
たは30からのグローバル命令をバス24から受け取り、そ
れらの命令を処理し、グローバル命令を要求したインタ
ーフェースに送るべき応答を生成する。各グローバル命
令に関して実施される処理については後で詳しく説明す
る。中央制御システム26はまた、空きバッファ供給マシ
ン(FBS)92も含んでいる。マシン92は多重化回路82と
バス24を介してグローバル命令マシン(GOM)90にDEQ
FREEグローバル命令を発行する。空きバッファ待ち行列
から外された空きバッファのアドレスは、貸出しバッフ
ァ・プールと呼ばれるランダム・アクセス・メモリ内に
記憶される。このプールは多数のそのような貸出しバッ
ファ・アドレスを含むことができる。LEASEグローバル
命令によってどの要求元にも1つのアドレスを与えるこ
とができる。したがって、空きバッファが要求元にきわ
めて迅速に与えられるので、オーバーラン条件が発生し
ない。
を含む、このマシン90は、要求元インターフェース22ま
たは30からのグローバル命令をバス24から受け取り、そ
れらの命令を処理し、グローバル命令を要求したインタ
ーフェースに送るべき応答を生成する。各グローバル命
令に関して実施される処理については後で詳しく説明す
る。中央制御システム26はまた、空きバッファ供給マシ
ン(FBS)92も含んでいる。マシン92は多重化回路82と
バス24を介してグローバル命令マシン(GOM)90にDEQ
FREEグローバル命令を発行する。空きバッファ待ち行列
から外された空きバッファのアドレスは、貸出しバッフ
ァ・プールと呼ばれるランダム・アクセス・メモリ内に
記憶される。このプールは多数のそのような貸出しバッ
ファ・アドレスを含むことができる。LEASEグローバル
命令によってどの要求元にも1つのアドレスを与えるこ
とができる。したがって、空きバッファが要求元にきわ
めて迅速に与えられるので、オーバーラン条件が発生し
ない。
グローバル命令マシン90は、次のような優先順位のラン
クで下記の要求元に対してサービスを提供する。
クで下記の要求元に対してサービスを提供する。
1−空きバッファ供給マシン 2−アダプタ・インターフェース(データ移動受信/ス
テーション・サービス) 3−マイクロプロセッサ これらの要求元はそれぞれ識別コードを有する。たとえ
ば、マイクロプロセッサは000、ステーション・サービ
スは100、空きバッファ供給マシン92は010である。各ア
ダプタ22はステーション・サービス機能を含んでいるの
で、各ステーション・サービス機能の識別コード100に
ハードワイヤ式識別が追加される。
テーション・サービス) 3−マイクロプロセッサ これらの要求元はそれぞれ識別コードを有する。たとえ
ば、マイクロプロセッサは000、ステーション・サービ
スは100、空きバッファ供給マシン92は010である。各ア
ダプタ22はステーション・サービス機能を含んでいるの
で、各ステーション・サービス機能の識別コード100に
ハードワイヤ式識別が追加される。
グローバル命令マシンにそのグローバル命令要求を送ら
せるため、要求元はアービタ28にグローバル命令要求を
発信する。優先順位がより高い他のバス要求が保留中で
ない場合には、アービタ28は要求元とグローバル命令マ
シン90に、グローバル命令許可信号(GO ENABLE信号)
を送る。
せるため、要求元はアービタ28にグローバル命令要求を
発信する。優先順位がより高い他のバス要求が保留中で
ない場合には、アービタ28は要求元とグローバル命令マ
シン90に、グローバル命令許可信号(GO ENABLE信号)
を送る。
要求元から送られるグローバル命令要求及びグローバル
命令マシン90から要求元に送られるグローバル命令応答
の一般書式について次に説明する。
命令マシン90から要求元に送られるグローバル命令応答
の一般書式について次に説明する。
グローバル命令要求/応答一般書式。グローバル命令を
GOで表す。その書式を第9図に示す。
GOで表す。その書式を第9図に示す。
アドレス・バイト1: − ビット0: 1に設定。メモリ・アクセス・モード − ビット1: 1に設定。(グローバル命令) − ビット2−3−4: グローバル命令要求/応答 宛先識別子DST − ビット5−6−7: グローバル命令要求/応答 発信識別子ORG 発信元/宛先フィールドは、次の要素の1つを指示す
る。
る。
− 000 プロセッサ − 001 GOM90 − 010 空きバッファ供給マシン92 − 100 アダプタ・インターフェース アドレス・バイト2 ビット0−3はグローバル命令の種類を表す。
− 0000 ENQUEUE − 0010 DEQUEUE − 0011 LEASE − 0100 DEQ−FREE − 0101 RELEASE その他のフィールド これらのフィールドは、後で説明するようにグローバル
命令の種類によって異なる。
命令の種類によって異なる。
ENQUEUEグローバル命令要求は、GO依存データ・バイト
2及び3中に待ち行列に入れるべきメッセージのアドレ
スMSG ADD(すなわちメッセージの第1バッファのアド
レス)を含み、GOアドレス・バイト2及び3中にそのメ
ッセージを入れるべき待ち行列の待ち行列識別QCB id
を含む。
2及び3中に待ち行列に入れるべきメッセージのアドレ
スMSG ADD(すなわちメッセージの第1バッファのアド
レス)を含み、GOアドレス・バイト2及び3中にそのメ
ッセージを入れるべき待ち行列の待ち行列識別QCB id
を含む。
ENQUEUE応答は、データ・バイト0と1中に待ち行列状
況を示すリターン・コードを含む。リターン・コードに
は次のものがある。
況を示すリターン・コードを含む。リターン・コードに
は次のものがある。
・ 待ち行列が空である ・ 待ち行列しきい値に達した ・ 要客が拒絶された DEQUEUE(待ち行列解除)グローバル命令要求は、GO依
存アドレス・バイト2及び3中に、メッセージをそこか
ら外すべき待ち行列の識別QCB idを含む。
存アドレス・バイト2及び3中に、メッセージをそこか
ら外すべき待ち行列の識別QCB idを含む。
DEQUEUE応答は、データ・バイト0及び1中にリターン
・コードを含み、また外されたメッセージのアドレスMS
G ADDを含む。
・コードを含み、また外されたメッセージのアドレスMS
G ADDを含む。
リターン・コードには次のものがある。
− 待ち行列が空である。
− 待ち行列しきい値に達した − 要求が拒絶された LEASEグローバル命令は、グローバル命令マシン90では
なく空きバッファ供給マシン92を暗示するので、特別な
ものである。
なく空きバッファ供給マシン92を暗示するので、特別な
ものである。
それは、要求元にすぐにも与えることができる貸出しバ
ッファのアドレスを保持する空きバッファ供給マシンの
レジスタの読取り操作を行う。
ッファのアドレスを保持する空きバッファ供給マシンの
レジスタの読取り操作を行う。
この読取り操作は、アービタ28によって要求元にバス許
可が与えられると同時に発行される。
可が与えられると同時に発行される。
たとえ空きバッファ待ち行列がその臨界バッファしきい
値に達していたとしても、GO依存アドレス・バイト3
は、バッファ・アドレスを獲得するため、呼び出された
急速処理ビットを含む。
値に達していたとしても、GO依存アドレス・バイト3
は、バッファ・アドレスを獲得するため、呼び出された
急速処理ビットを含む。
戻されるデータは、リターン・コードとバッファ供給マ
シン92によって与えられる貸出しバッファのアドレスと
からなる。
シン92によって与えられる貸出しバッファのアドレスと
からなる。
リターン・コードの内容は次のとおりである。
− 制限バッファしきい値に達した − 要求が拒絶された − 貸出しバッファ・プールが空である DEQ FREE(待ち行列解除フリー)グローバル命令は、
空しバッファ供給マシンが貸出しバッファ・プールを充
たすために使用する。
空しバッファ供給マシンが貸出しバッファ・プールを充
たすために使用する。
DEQ FREE要求は、DEQ FREEタイプのグローバル命令だ
けを含み、DEQ FREE応答は、リターン・コードと、空
きバッファ待ち行列から外されたバッファのアドレスを
含む。
けを含み、DEQ FREE応答は、リターン・コードと、空
きバッファ待ち行列から外されたバッファのアドレスを
含む。
リターン・コードの内容は次のとおりである。
− 制限バッファしきい値に達した − 臨界バッファしきい値に達した − 要求が拒絶された RELEASE(解放)グローバル命令要求は、データ・バイ
ト2及び3中にメッセージMSG ADDのアドレスを含む。
ト2及び3中にメッセージMSG ADDのアドレスを含む。
その応答は、データ・バイト0及び1中にリターン・コ
ードを含む。
ードを含む。
リターン・コードの内容は次のとおりである。
− 制限バッファしきい値に達した − 臨界バッファしきい値に達した − 要求が拒絶された グローバル命令マシン90は、すでに説明したグローバル
命令の要求及び応答書式に従ってバス24上で送受信され
るアドレス及びデータ・バイトを記憶するための入出力
及び作業用レジスタ100を含んでいる。これらの書式は
また、必要に応じてグローバル命令の実行時に情報をセ
ーブするのにも使用される。
命令の要求及び応答書式に従ってバス24上で送受信され
るアドレス及びデータ・バイトを記憶するための入出力
及び作業用レジスタ100を含んでいる。これらの書式は
また、必要に応じてグローバル命令の実行時に情報をセ
ーブするのにも使用される。
制御部102は、レジスタ100と有限状態マシン104の間の
制御インターフェースである。有限状態マシン104は、
グローバル命令を実施する論理的処理を実行する。
制御インターフェースである。有限状態マシン104は、
グローバル命令を実施する論理的処理を実行する。
グローバル命令マシン90によって実施される処理につい
て次に説明する。
て次に説明する。
アービタ28がユーザからのグローバル命令要求に応答し
て線106上にグローバル命令バス許可すなわちGOエネー
ブル信号を供給する限り、グローバル命令要求がバス24
を介して送られる。GO要求はマシン90からグローバル命
令応答を得るまで、要求元ユーザによって活動状態に保
たれる。
て線106上にグローバル命令バス許可すなわちGOエネー
ブル信号を供給する限り、グローバル命令要求がバス24
を介して送られる。GO要求はマシン90からグローバル命
令応答を得るまで、要求元ユーザによって活動状態に保
たれる。
グローバル命令の実行中にGOバス許可がバス・アービタ
28によってドロップされることがあるので、グローバル
命令マシンは、データ記憶バス24にアクセスするたびに
GOエネーブル線106が活動状態にあるかどうか検査す
る。GOエネーブルが非活動状態の場合は、GOエネーブル
が活動状態になるまでそのバス・アクセスは保留され
る。
28によってドロップされることがあるので、グローバル
命令マシンは、データ記憶バス24にアクセスするたびに
GOエネーブル線106が活動状態にあるかどうか検査す
る。GOエネーブルが非活動状態の場合は、GOエネーブル
が活動状態になるまでそのバス・アクセスは保留され
る。
4)待ち行列化操作ENQUEUE 待ち行列化操作の流れ図を第10A図と10B図に示す。
まず、(ステップ110)でバス24から受け取ってレジス
タ100に入力されたENQUEUE要求が、制御部102によって
復号され、有限状態マシン104内で待ち行列化処理が開
始される。待ち行列化要求はレジスタ100にセーブされ
る。
タ100に入力されたENQUEUE要求が、制御部102によって
復号され、有限状態マシン104内で待ち行列化処理が開
始される。待ち行列化要求はレジスタ100にセーブされ
る。
第2の操作(ステップ111)で、先に第3図に関して説
明したように、待ち行列に入れるべきメッセージの第1
バッファのアドレスを含むメッセージ・アドレスからメ
ッセージ・バッファ制御ブロック(BCB)のアドレスを
算出する。
明したように、待ち行列に入れるべきメッセージの第1
バッファのアドレスを含むメッセージ・アドレスからメ
ッセージ・バッファ制御ブロック(BCB)のアドレスを
算出する。
このバッファ制御ブロックBCBのMCCB及びBCCBの2ワー
ドが読み取られてセーブされる。これらのワードは、今
後の操作で使用されるメッセージ・バイト・カウントを
含む。
ドが読み取られてセーブされる。これらのワードは、今
後の操作で使用されるメッセージ・バイト・カウントを
含む。
また、メッセージを入れるべき待ち行列の識別QCB Id
から待ち行列制御ブロックのアドレスQCB ADDも生成さ
れる。
から待ち行列制御ブロックのアドレスQCB ADDも生成さ
れる。
次に(ステップ112)で、QCBブロックが読み取られセー
ブされる。このブロックは新しいメッセージを入れるべ
き待ち行列のバッファ・カウントを含む。
ブされる。このブロックは新しいメッセージを入れるべ
き待ち行列のバッファ・カウントを含む。
ステップ113で、待ち行列に入れるべきメッセージのバ
ッファ・カウントQBCを算出する。これはMCCBからのバ
イト・カウントをバッファの内容(すなわち好ましい実
施例では250バイト)で割った商に等しい。この数字を
待ち行列制御ブロックQCBから読み取られた待ち行列バ
ッファ・カウントに加えて、新しいバッファ・カウント
が算出される。
ッファ・カウントQBCを算出する。これはMCCBからのバ
イト・カウントをバッファの内容(すなわち好ましい実
施例では250バイト)で割った商に等しい。この数字を
待ち行列制御ブロックQCBから読み取られた待ち行列バ
ッファ・カウントに加えて、新しいバッファ・カウント
が算出される。
ステップ114で、このカウントを最大バッファ・カウン
トと比較する。
トと比較する。
最大バッファ・カウントより小さい場合には、そのカウ
ントをバッファしきい値と比較する(ステップ115)。
ントをバッファしきい値と比較する(ステップ115)。
バッファしきい値より大きい場合には、しきい値識別子
がバッファ制御ブロックQCBの待ち行列状況フィールド
中で設定され、リターン・コードが生成される(ステッ
プ116)。
がバッファ制御ブロックQCBの待ち行列状況フィールド
中で設定され、リターン・コードが生成される(ステッ
プ116)。
そうでない場合には、しきい値識別子がバッファ制御ブ
ロックQCBの待ち行列状況フィールド中でリセットさ
れ、リターン・コードが生成される(ステップ117)。
ロックQCBの待ち行列状況フィールド中でリセットさ
れ、リターン・コードが生成される(ステップ117)。
第10A図に示されているステップ110ないし117は制御ブ
ロックを取り出して検査するためのものである。
ロックを取り出して検査するためのものである。
次に、第10B図に示すように待ち行列化処理が実行され
る。
る。
まずはじめに、有限状態マシン104が、ステップ112でセ
ーブされた待ち行列制御ブロックQCBの待ち行列状況フ
ィールドから、その待ち行列が空であるかどうか判定す
る(ステップ120)。
ーブされた待ち行列制御ブロックQCBの待ち行列状況フ
ィールドから、その待ち行列が空であるかどうか判定す
る(ステップ120)。
空の場合には、この待ち行列の新しい待ち行列制御ブロ
ックQCBが作成され、メモリの待ち行列制御ブロックQCB
アドレスに書き込まれる(ステップ121)。
ックQCBが作成され、メモリの待ち行列制御ブロックQCB
アドレスに書き込まれる(ステップ121)。
頭部及び末尾フィールドにはメッセージ・アドレスMSG
ADDが書き込まれ、状況フィールドには情報待ち行列
が空でないという情報が書き込まれる。また待ち行列バ
ッファ・カウントにはステップ113で算出された新しい
バッファ・カウントQBCが書き込まれる。
ADDが書き込まれ、状況フィールドには情報待ち行列
が空でないという情報が書き込まれる。また待ち行列バ
ッファ・カウントにはステップ113で算出された新しい
バッファ・カウントQBCが書き込まれる。
ステップ122で、QCB idが検査され、マイクロコード・
インバウンド待ち行列に対して待ち行列化処理が実行さ
れたか否かを判定する。
インバウンド待ち行列に対して待ち行列化処理が実行さ
れたか否かを判定する。
実行された場合には、サービス・テーブルのアドレスが
作成され、サービス・テーブルが更新される(ステップ
123)。
作成され、サービス・テーブルが更新される(ステップ
123)。
マイクロプロセッサに割込みが発行され(ステップ12
4)、マイクロコード・インバウンド待ち行列が空でな
いことを知らせる。したがってマイクロプロセッサは待
ち行列解除処理(DEQUEUE)を開始してその待ち行列内
に入っているメッセージを獲得し、メッセージを処理し
(経路指定、経路制御)、メッセージを宛先アウトバウ
ンド待ち行列に入れる。この動作は、マイクロコードに
よってメッセージを処理しなければならないときだけ必
要である。そのような場合、マイクロプロセッサは、マ
シン90に待ち行列解除グローバル命令DEQUEUEを送って
メッセージを獲得する。マシン90は後で第11A図及び11B
図に関して説明するように扱われる。マイクロプロセッ
サはメッセージを処理し(経路指定の流れの制御)、待
ち行列化グローバル命令ENQUEUEを送ってリンク・アウ
トバウンド待ち行列にそれらのメッセージを入れる。次
にメッセージはリンク・アウトバウンド待ち行列から宛
先ユーザに送られる。
4)、マイクロコード・インバウンド待ち行列が空でな
いことを知らせる。したがってマイクロプロセッサは待
ち行列解除処理(DEQUEUE)を開始してその待ち行列内
に入っているメッセージを獲得し、メッセージを処理し
(経路指定、経路制御)、メッセージを宛先アウトバウ
ンド待ち行列に入れる。この動作は、マイクロコードに
よってメッセージを処理しなければならないときだけ必
要である。そのような場合、マイクロプロセッサは、マ
シン90に待ち行列解除グローバル命令DEQUEUEを送って
メッセージを獲得する。マシン90は後で第11A図及び11B
図に関して説明するように扱われる。マイクロプロセッ
サはメッセージを処理し(経路指定の流れの制御)、待
ち行列化グローバル命令ENQUEUEを送ってリンク・アウ
トバウンド待ち行列にそれらのメッセージを入れる。次
にメッセージはリンク・アウトバウンド待ち行列から宛
先ユーザに送られる。
続いて、リターン・コードが生成され、待ち行列化応答
がバス24を介して送られる。
がバス24を介して送られる。
待ち行列がマイクロコード・インバウンド待ち行列でな
い場合には、アダプタ・インターフェースのステーショ
ン・サービス手段88が活動化される(ステップ126)。
したがって、手段88は、アダプタに接続されているユー
ザに関するリンク・アウトバウンド待ち行列が送信すべ
きメッセージを含んでいるか、またはリンク・インバウ
ンド待ち行列が後で第26図に関して説明するように処理
するため読み取られることに気づく。
い場合には、アダプタ・インターフェースのステーショ
ン・サービス手段88が活動化される(ステップ126)。
したがって、手段88は、アダプタに接続されているユー
ザに関するリンク・アウトバウンド待ち行列が送信すべ
きメッセージを含んでいるか、またはリンク・インバウ
ンド待ち行列が後で第26図に関して説明するように処理
するため読み取られることに気づく。
待ち行列が空でないということが検出された(ステップ
120)場合、メッセージ待ち行列の末尾のバッファ制御
ブロックのアドレスが、待ち行列制御ブロックの末尾フ
ィールドから生成される。
120)場合、メッセージ待ち行列の末尾のバッファ制御
ブロックのアドレスが、待ち行列制御ブロックの末尾フ
ィールドから生成される。
バッファ制御ブロックが読み取られ、その内容がセーブ
される(ステップ127)。
される(ステップ127)。
メッセージ・アドレスに等しいバッファ制御ブロック
(MCCB)に書き込むべき次のメッセージ・アドレスが生
成され、MCCBに書き込まれる(ステップ128)。
(MCCB)に書き込むべき次のメッセージ・アドレスが生
成され、MCCBに書き込まれる(ステップ128)。
新しい待ち行列制御ブロックが生成される(ステップ12
9)。
9)。
末尾フィールドはメッセージ・アドレスに等しく、バッ
ファ・カウントQBCはステップ113で算出された新しいバ
ッファ・カウントQBCに等しい。待ち行列状況は「空で
はない」である。新い待ち行列制御ブロックが書かれ
る。
ファ・カウントQBCはステップ113で算出された新しいバ
ッファ・カウントQBCに等しい。待ち行列状況は「空で
はない」である。新い待ち行列制御ブロックが書かれ
る。
ステップ124、126、129、またはステップ114の後の待ち
行列化処理の最終ステップ(ステップ130)で、リター
ン・コードが生成され、出力レジスタ100を介してバス2
4上にENQUEUE応答が送られる。
行列化処理の最終ステップ(ステップ130)で、リター
ン・コードが生成され、出力レジスタ100を介してバス2
4上にENQUEUE応答が送られる。
5)待ち行列解除処理DEQUEUE 次に第11A図及び11B図を参照して、待ち行列解除処理を
実施するためにグローバル命令マシン90が実行する動作
について説明する。
実施するためにグローバル命令マシン90が実行する動作
について説明する。
DEQUEUE要求をバス24から受け取る。この要求は、メッ
セージをそこから外すべき待ち行列の識別QCB idを含
む。
セージをそこから外すべき待ち行列の識別QCB idを含
む。
要求アドレスとデータ・フィールドが1つの入力レジス
タ100にセーブされる(ステップ140)。待ち行列制御ブ
ロックQCBアドレスがQCB idから生成される(ステップ
141)。
タ100にセーブされる(ステップ140)。待ち行列制御ブ
ロックQCBアドレスがQCB idから生成される(ステップ
141)。
待ち行列制御ブロックQCBが読み取られ(ステップ14
2)、その内容がレジスタ100にセーブされる。このブロ
ックは、その待ち行列の第1バッファのアドレスを含
む。
2)、その内容がレジスタ100にセーブされる。このブロ
ックは、その待ち行列の第1バッファのアドレスを含
む。
この第1バッファのバッファ制御ブロックBCBのアドレ
スが生成され、バッファ制御ブロックBCBが読み取られ
る。MCCB及びBCCB情報がセーブされる(ステップ14
3)。
スが生成され、バッファ制御ブロックBCBが読み取られ
る。MCCB及びBCCB情報がセーブされる(ステップ14
3)。
メッセージ・バッファ・カウントが算出される(ステッ
プ144)。これは、MCCBから読み取ったメッセージ・バ
イト・カウントをバッファ・バイト・カウントで割った
商に等しい。このバッファ・バイト・カウントは、好ま
しい実施例では256である。
プ144)。これは、MCCBから読み取ったメッセージ・バ
イト・カウントをバッファ・バイト・カウントで割った
商に等しい。このバッファ・バイト・カウントは、好ま
しい実施例では256である。
新しいバッファ・カウントが算出される。これは待ち行
列制御ブロック内に含まれる旧バッファ・カウントQBC
からメッセージ・バッファ・カウントを引いた差に等し
い。
列制御ブロック内に含まれる旧バッファ・カウントQBC
からメッセージ・バッファ・カウントを引いた差に等し
い。
新しい待ち行列バッファ・カウントをバッファしきい値
と比較する(ステップ145)。そのカウントがしきい値
より大きい場合にはステップ146において、その待ち行
列状況のしきい値標識が設定され、リターン・コードが
生成される。
と比較する(ステップ145)。そのカウントがしきい値
より大きい場合にはステップ146において、その待ち行
列状況のしきい値標識が設定され、リターン・コードが
生成される。
カウントがしきい値より小さい場合にはステップ147に
おいてしきい値標識がリセットされ、リターン・コード
が生成される。
おいてしきい値標識がリセットされ、リターン・コード
が生成される。
次に待ち行列解除が実行される(第1B図) 応答データ・フィールドが生成される(ステップ15
0)。戻されるメッセージ・アドレスは、待ち行列制御
ブロックの頭部フィールドに含まれる待ち行列の第1バ
ッファのアドレスである。
0)。戻されるメッセージ・アドレスは、待ち行列制御
ブロックの頭部フィールドに含まれる待ち行列の第1バ
ッファのアドレスである。
待ち行列制御ブロックQCBの頭部フィールドを末尾フィ
ールドと比較する。
ールドと比較する。
両者が等しい場合には、待ち行列が空であることを意味
し、「待ち行列が空である」に一致する待ち行列状況と
リターン・コードが生成される(ステップ152)。
し、「待ち行列が空である」に一致する待ち行列状況と
リターン・コードが生成される(ステップ152)。
待ち行列制御ブロックに新しい待ち行列バッファ・カウ
ント=0が書き込まれる(ステップ153)。
ント=0が書き込まれる(ステップ153)。
次に、ステップ154で、ステップ140でセーブされたQCB
idが検査され、その待ち行列がマイクロコード・イン
バウンド待ち行列であるかどうかが判定される。
idが検査され、その待ち行列がマイクロコード・イン
バウンド待ち行列であるかどうかが判定される。
そうである場合、その待ち行列グループに対するサービ
ス・テーブル・アドレスが生成され、サービス・テーブ
ルが更新される(ステップ156)。
ス・テーブル・アドレスが生成され、サービス・テーブ
ルが更新される(ステップ156)。
そうでない場合は、要求テーブル89の状況ビットがリセ
ットされる(ステップ156)。次に、ステップ155または
156の後で、リターン・コードが生成され、出力レジス
タ100を介してバス24上に待ち行列解除応答が送られる
(ステップ157)。
ットされる(ステップ156)。次に、ステップ155または
156の後で、リターン・コードが生成され、出力レジス
タ100を介してバス24上に待ち行列解除応答が送られる
(ステップ157)。
要求の発行元は外されたメッセージのアドレスを受け取
った後そのメッセージを処理することができる。
った後そのメッセージを処理することができる。
ステップ151でその頭部アドレスが待ち行列制御ブロッ
ク内の末尾アドレスと異なると判定された場合は、ステ
ップ143でセーブされた次のメッセージ・アドレスに等
しい待ち行列制御ブロックの頭部アドレスが作成され
(ステップ158)、新しい待ち行列制御ブロックと共に
待ち行列制御ブロックに書き込まれる(ステップ15
9)。
ク内の末尾アドレスと異なると判定された場合は、ステ
ップ143でセーブされた次のメッセージ・アドレスに等
しい待ち行列制御ブロックの頭部アドレスが作成され
(ステップ158)、新しい待ち行列制御ブロックと共に
待ち行列制御ブロックに書き込まれる(ステップ15
9)。
次にDEQUEUE応答がバス24上に送られる(ステップ15
7)。
7)。
6)DEQ FREE 次に第12A図と12B図を参照して空きバッファ待ち行列か
らバッファを外すために行なわれる処理について説明す
る。グローバル命令のDEQ FREE発行元は空きバッファ
供給マシン92である。
らバッファを外すために行なわれる処理について説明す
る。グローバル命令のDEQ FREE発行元は空きバッファ
供給マシン92である。
グローバル命令マシンがDEQ FREE命令をバス24から受
け取る(ステップ160)。
け取る(ステップ160)。
このとき、空きバッファ待ち行列制御ブロックのアドレ
スは空きバッファ待ち行列制御ブロック・アドレスであ
る。待ち行列制御ブロックQCBが読み取られセーブされ
る(ステップ161)。
スは空きバッファ待ち行列制御ブロック・アドレスであ
る。待ち行列制御ブロックQCBが読み取られセーブされ
る(ステップ161)。
待ち行列制御ブロックQCBの頭部フィールドから第1バ
ッファのバッファ制御ブロックのアドレスが生成され
る。BCBが読み取られ、MCCBとBCCBがセーブされる(ス
テップ162)。
ッファのバッファ制御ブロックのアドレスが生成され
る。BCBが読み取られ、MCCBとBCCBがセーブされる(ス
テップ162)。
新しい待ち行列バッファ・カウントが算出される(ステ
ップ163)。この新しいカウントは、待ち行列制御ブロ
ックQCB内の旧待ち行列バッファ・カウントから1を引
いた差に等しい。
ップ163)。この新しいカウントは、待ち行列制御ブロ
ックQCB内の旧待ち行列バッファ・カウントから1を引
いた差に等しい。
新しいバッファ・カウントQBCが、待ち行列制御ブロッ
クQCB中で設定されステップ161でセーブされた制限バッ
ファしきい値と比較される(ステップ164)。
クQCB中で設定されステップ161でセーブされた制限バッ
ファしきい値と比較される(ステップ164)。
しきい値より小さい場合、待ち行列状況及びリターン・
コードに関する制限しきい値標識がリセツトされる(ス
テップ165)。
コードに関する制限しきい値標識がリセツトされる(ス
テップ165)。
しきい値より大きい場合は、待ち行列状況及びリターン
・コードに関する制限しきい値標識がセットされる(ス
テップ166)。
・コードに関する制限しきい値標識がセットされる(ス
テップ166)。
新しいバッファ・カウントQBCが臨界しきい値と比較さ
れる(ステップ167)。しきい値より小さい場合は、待
ち行列状況及びリターン・コードに関する臨界しきい値
標識がリセットされる(ステップ168)。しきい値より
大きい場合は、状況及びリターン・コードに関する臨界
しきい値標識がセットされる(ステップ169)。
れる(ステップ167)。しきい値より小さい場合は、待
ち行列状況及びリターン・コードに関する臨界しきい値
標識がリセットされる(ステップ168)。しきい値より
大きい場合は、状況及びリターン・コードに関する臨界
しきい値標識がセットされる(ステップ169)。
次に、第12B図に示すように、待ち行列解除処理が行な
われる。
われる。
応答データ・フィールドが生成される(ステップ17
0)。これはステップ161でセーブされた頭部フィールド
に等しい。
0)。これはステップ161でセーブされた頭部フィールド
に等しい。
新しいバッファ・カウントQCBに一致する待ち行列バッ
ファ・カウントが生成される。ステップ162でセーブさ
れた次のメッセージ・アドレスに一致するバッファ・カ
ウントQBCの新しい頭部フィールドが生成され、待ち行
列制御ブロックQCBが書き込まれる(ステップ171)。
ファ・カウントが生成される。ステップ162でセーブさ
れた次のメッセージ・アドレスに一致するバッファ・カ
ウントQBCの新しい頭部フィールドが生成され、待ち行
列制御ブロックQCBが書き込まれる(ステップ171)。
リターン・コードが生成され、DEQ FREE応答がバス24
上に送られる(ステップ172)。
上に送られる(ステップ172)。
このようにして、空きバッファ供給マシン92は、後で説
明するように貸出しバッファ・プールに追加される空き
バッファのアドレスを獲得する。
明するように貸出しバッファ・プールに追加される空き
バッファのアドレスを獲得する。
7)RELEASE要求 次に、これらのメッセージの内容が宛先ユーザに首尾よ
く送られたとき、バッファを空きバッファ待ち行列に入
れる解放処理について、第13A図、第13B図及び第13C図
を参照して説明する。
く送られたとき、バッファを空きバッファ待ち行列に入
れる解放処理について、第13A図、第13B図及び第13C図
を参照して説明する。
空きバッファ待ち行列では、次のメッセージ・アドレス
がMCCBに含まれているためにバッファが互いに連鎖さ
れ、メッセージが1つのバッファだけに含まれていると
考えられるので、BCCB内の次のバッファ・アドレスは常
にFFFFに一致する。
がMCCBに含まれているためにバッファが互いに連鎖さ
れ、メッセージが1つのバッファだけに含まれていると
考えられるので、BCCB内の次のバッファ・アドレスは常
にFFFFに一致する。
第13A図の第1の動作で解放処理の準備が行なわれる。
RELEASE要求をバス24から受け取る(ステップ180)。こ
れは解放すべきメッセージのアドレスを含む。
れは解放すべきメッセージのアドレスを含む。
このメッセージは、1つのバッファだけに含されている
こともあり、また連鎖された複数のバッファに含まれる
こともある。
こともあり、また連鎖された複数のバッファに含まれる
こともある。
そのメッセージの第1バッファのバッファ制御ブロック
BCBのアドレスがメッセージ・アドレスから生成され
る。MCCB及びBCCB情報が読み取られる。待ち行列制御ブ
ロック・アドレスQCB ADDが生成される。これは空きバ
ッファ待ち行列アドレスと一致する。待ち行列制御ブロ
ックQCBの内容が読み取られセーブされる。(ステップ1
81)。
BCBのアドレスがメッセージ・アドレスから生成され
る。MCCB及びBCCB情報が読み取られる。待ち行列制御ブ
ロック・アドレスQCB ADDが生成される。これは空きバ
ッファ待ち行列アドレスと一致する。待ち行列制御ブロ
ックQCBの内容が読み取られセーブされる。(ステップ1
81)。
新しい待ち行列バッファ・カウントすなわち新しいバッ
ファ・カウントQBCが算出される。これはステップ181で
セーブされた待ち行列制御ブロックQCB内に含まれる旧
バッファ・カウントにメッセージ・バッファ・カウント
を加えた和に一致する。メッセージ・バッファ・カウン
トは、ステップ181でセーブされたACCB内に含まれるメ
ッセージ・バイト・カウントを256で割ったものに等し
い(ステップ182)。
ファ・カウントQBCが算出される。これはステップ181で
セーブされた待ち行列制御ブロックQCB内に含まれる旧
バッファ・カウントにメッセージ・バッファ・カウント
を加えた和に一致する。メッセージ・バッファ・カウン
トは、ステップ181でセーブされたACCB内に含まれるメ
ッセージ・バイト・カウントを256で割ったものに等し
い(ステップ182)。
新しいバッファ・カウントQBCがステップ181でセーブさ
れたバッファ・カウントQBC内に含まれる制限バッファ
しきい値と比較される(ステップ183)。
れたバッファ・カウントQBC内に含まれる制限バッファ
しきい値と比較される(ステップ183)。
しきい値よりも小さい場合、待ち行列状況及びリターン
・コードに関する制限しきい値標識がセットされる(ス
テップ184)。
・コードに関する制限しきい値標識がセットされる(ス
テップ184)。
しきい値よりも大きい場合は、待ち行列状況及びリター
ン・コードに関する制限しきい値標識がリセットされる
(ステップ185)。
ン・コードに関する制限しきい値標識がリセットされる
(ステップ185)。
新しいバッファ・カウントQBCはまた臨界バッファしき
い値とも比較される(ステップ186)。しきい値よりも
小さい場合は、待ち行列状況及びリターン・コードの臨
界しきい値標識がセットされる(ステップ187)。しき
い値より大きい場合は、待ち行列状況及びリターン・コ
ードの臨界しきい値標識がリセットされる(ステップ18
8)。
い値とも比較される(ステップ186)。しきい値よりも
小さい場合は、待ち行列状況及びリターン・コードの臨
界しきい値標識がセットされる(ステップ187)。しき
い値より大きい場合は、待ち行列状況及びリターン・コ
ードの臨界しきい値標識がリセットされる(ステップ18
8)。
次にメッセージ・バッファが検査され、第13B図に示す
ようにマークされる。
ようにマークされる。
カウンタ「現在のバッファ・アドレス」(CBA)がメッ
セージ・アドレスの初期値に設定される(ステップ18
9)。
セージ・アドレスの初期値に設定される(ステップ18
9)。
ステップ181でBCCBからセーブされた次のバッファ・ア
ドレスに一致する次のバッファ・アドレスが生成される
(ステップ190)。
ドレスに一致する次のバッファ・アドレスが生成される
(ステップ190)。
次のバッファ・アドレスが検査される(ステップ19
1)。
1)。
次のバッファ・アドレスがFFFFに一致する場合は、バッ
ファが最終メッセージ・バッファであることを意味し、
FFFFに一致する次のバッファ・アドレスが生成され、FF
FFに一致するACCBとBCCBが書き込まれる(ステップ19
2)。
ファが最終メッセージ・バッファであることを意味し、
FFFFに一致する次のバッファ・アドレスが生成され、FF
FFに一致するACCBとBCCBが書き込まれる(ステップ19
2)。
FFFFに一致しない場合は、FFFFに一致する次のバッファ
・アドレスが生成され、現在のバッファ・アドレス(CB
A)カウンタがステップ190で生成された次のバッファ・
アドレスに設定される。MCCBに現在のバッファ・アドレ
ス(CBA)値が書き込まれ、BCCBにFFFFが書き込まれる
(ステップ193)。
・アドレスが生成され、現在のバッファ・アドレス(CB
A)カウンタがステップ190で生成された次のバッファ・
アドレスに設定される。MCCBに現在のバッファ・アドレ
ス(CBA)値が書き込まれ、BCCBにFFFFが書き込まれる
(ステップ193)。
次のBCBアドレスが生成され、次のBCCBが読み取られ、
セーブされる(ステップ194)。次に、ステップ190に入
り、次のバッファ・アドレスがFFFFであることが、すな
わちメッセージ・バッファの制御ブロックが更新された
ことが判明するまで処理が実行される。次に第13C図に
示すように待ち行列化処理が実行される。
セーブされる(ステップ194)。次に、ステップ190に入
り、次のバッファ・アドレスがFFFFであることが、すな
わちメッセージ・バッファの制御ブロックが更新された
ことが判明するまで処理が実行される。次に第13C図に
示すように待ち行列化処理が実行される。
空きバッファ待ち行列の最終バッファのBCBのアドレス
が、空き待ち行列制御ブロックの末尾フィールドから生
成される。ブロックの内容が読み取られセーブされる
(ステップ195)。
が、空き待ち行列制御ブロックの末尾フィールドから生
成される。ブロックの内容が読み取られセーブされる
(ステップ195)。
ステップ181でセーブされたメッセージ・アドレスに一
致するMCCBに次に書き込むメッセージ・アドレスが、空
きバッファ待ち行列の最終メッセージ・バッファのMCCB
ブロックに(解放前に)書き込まれる(ステップ19
6)。
致するMCCBに次に書き込むメッセージ・アドレスが、空
きバッファ待ち行列の最終メッセージ・バッファのMCCB
ブロックに(解放前に)書き込まれる(ステップ19
6)。
現在のバッファ・アドレス(CBA)カウンタ値及びステ
ップ182で算出された待ち行列バッファ・カウントに等
しい待ち行列制御ブロックQCBの末尾フィールドが生成
され、待ち行列制御ブロックQCBが書き込まれる(ステ
ップ197)。
ップ182で算出された待ち行列バッファ・カウントに等
しい待ち行列制御ブロックQCBの末尾フィールドが生成
され、待ち行列制御ブロックQCBが書き込まれる(ステ
ップ197)。
最後に、リターン・コードが生成され、RELEASE応答が
バス24上に送られる。
バス24上に送られる。
8)空きバッファ供給マシン 次に空きバッファ供給マシン92について第14図を参照し
て説明する。
て説明する。
マシン92は、貸出しバッファ・プール(LBP200)を備え
ている。LEP200はランダム・アクセス・メモリであり、
DEQ FREEグローバル命令応答中で空きバッファ供給マ
シン92が受け取った空きバッファのアドレスがそこに書
き込まれる。
ている。LEP200はランダム・アクセス・メモリであり、
DEQ FREEグローバル命令応答中で空きバッファ供給マ
シン92が受け取った空きバッファのアドレスがそこに書
き込まれる。
DEQ−FREEグローバル命令が制御部202から送られる。こ
れは第15A図及び第15B図に示すような貸出しバッファ・
プールのローディング操作を実施する有限状態マシンで
ある。
れは第15A図及び第15B図に示すような貸出しバッファ・
プールのローディング操作を実施する有限状態マシンで
ある。
レジスタ204は、有限状態マシン202用の作業レジスタ
と、バス24とのインターフェースをとる入出力レジスタ
を含む。
と、バス24とのインターフェースをとる入出力レジスタ
を含む。
有限状態マシン202はまた、線205−L及び205−Cを介
してリターン・コードを受け取る。このリターン・コー
ドは制限しきい値に達した及び臨界しきい値に達したと
のコードであり、空きバッファ待ち行列が満杯の標識を
与えるDEQ FREEグローバル命令応答中でグローバル命
令マシン90から送られる。
してリターン・コードを受け取る。このリターン・コー
ドは制限しきい値に達した及び臨界しきい値に達したと
のコードであり、空きバッファ待ち行列が満杯の標識を
与えるDEQ FREEグローバル命令応答中でグローバル命
令マシン90から送られる。
貸出しバッファ・プールはアクセス・マネージャ206の
制御下でアクセスされ、貸出しバッファ・プールに含ま
れるバッファ・アドレスの数の標識を有限状態マシン20
2に供給するカウンタ208の制御下で動作する。
制御下でアクセスされ、貸出しバッファ・プールに含ま
れるバッファ・アドレスの数の標識を有限状態マシン20
2に供給するカウンタ208の制御下で動作する。
貸出しバッファ・プール200のアドレスが、後で第15B図
に関して説明するように、ポインターイン・レジスタ21
2及びポインターアウト・レジスタ214の制御下でバス21
0に提供される。
に関して説明するように、ポインターイン・レジスタ21
2及びポインターアウト・レジスタ214の制御下でバス21
0に提供される。
有限状態マシン202は回線214を介してアービタ28にバス
要求を供給し、回線216を介してアービタ28からバス許
可信号を受け取る。
要求を供給し、回線216を介してアービタ28からバス許
可信号を受け取る。
有限状態マシン202は後で第16図に関して説明するよう
にLEASEグローバル命令の実行も行なう。
にLEASEグローバル命令の実行も行なう。
マシン202は、バス24から貸出し(LEASE)要求を受け取
り、要求元に、貸出しバッファ・プール200から貸出し
レジスタ218に記憶されるバッファのアドレスを供給す
る。
り、要求元に、貸出しバッファ・プール200から貸出し
レジスタ218に記憶されるバッファのアドレスを供給す
る。
次に第15A図及びB図を参照して貸出しバッファ・プー
ルのローディングについて説明する。まずはじめに(ス
テップ250)有限状態マシン202がLEASEグローバル命令
が進行中であるかどうか検査する(ステップ251)。検
査中である場合、処理は待ち状態となる。
ルのローディングについて説明する。まずはじめに(ス
テップ250)有限状態マシン202がLEASEグローバル命令
が進行中であるかどうか検査する(ステップ251)。検
査中である場合、処理は待ち状態となる。
進行中でない場合、マシン202は貸出しバッファ・プー
ルが満杯であるかどうか検査する(ステップ252)。
ルが満杯であるかどうか検査する(ステップ252)。
満杯である場合、ステップ251で処理が再開される。満
杯でない場合、DEQ FREEグローバル命令要求が生成さ
れ、線214が活動化される(ステップ253)。
杯でない場合、DEQ FREEグローバル命令要求が生成さ
れ、線214が活動化される(ステップ253)。
許可線216を検査して(ステップ254)、空きバッファ供
給マシンがバス24にDEQ FREE要求を送出できるかどう
か検査する。
給マシンがバス24にDEQ FREE要求を送出できるかどう
か検査する。
線216がアービタ28によって活動化されると、DEQ FREE
要求がレジスタ204を介してバス24上に送られる(ステ
ップ255)。
要求がレジスタ204を介してバス24上に送られる(ステ
ップ255)。
次に、有限状態マシンがDEQ FREE応答を待つ(ステッ
プ256)。応答を受け取ると(ステップ257)、バッファ
・アドレス及びリターン・コードが作業レジスタ204に
セーブされる。
プ256)。応答を受け取ると(ステップ257)、バッファ
・アドレス及びリターン・コードが作業レジスタ204に
セーブされる。
次に、貸出しグローバル命令LEASEが進行中であるかど
うか判定するために検査が行なわれる(ステップ25
8)。リターン・コードが検査され(ステップ258)、待
ち行列が満杯の場合は、マイクロプロセッサ18の制御装
置に割込みを行なうための割込み信号が活動化される
(ステップ259)。また許可信号または許可応答を所与
の時間内に受け取らなかった場合には、ステップ259に
入る。
うか判定するために検査が行なわれる(ステップ25
8)。リターン・コードが検査され(ステップ258)、待
ち行列が満杯の場合は、マイクロプロセッサ18の制御装
置に割込みを行なうための割込み信号が活動化される
(ステップ259)。また許可信号または許可応答を所与
の時間内に受け取らなかった場合には、ステップ259に
入る。
イエスの場合には、処理が待機状態となり、ノーの場合
にはカウンタ208が検査される(ステップ259)。バッフ
ァ・カウントが0であることが判明した場合、ステップ
257でセーブされたバッファ・アドレスが貸出しレジス
タ218に書き込まれ、カウンタが1に設定される(ステ
ップ260)。次に処理がステップ265へ進む。
にはカウンタ208が検査される(ステップ259)。バッフ
ァ・カウントが0であることが判明した場合、ステップ
257でセーブされたバッファ・アドレスが貸出しレジス
タ218に書き込まれ、カウンタが1に設定される(ステ
ップ260)。次に処理がステップ265へ進む。
カウンタ値がゼロでないことが判明した場合、バッファ
・アドレスがレジスタ212内のポインタで指示されるア
ドレスに書き込まれ、カウンタがPOOL・カウント+1に
設定される(ステップ261)。
・アドレスがレジスタ212内のポインタで指示されるア
ドレスに書き込まれ、カウンタがPOOL・カウント+1に
設定される(ステップ261)。
次に、レジスタ内のポインタの内容がFFに一致している
がどうか検査される。FFはバッファ・プールが満杯であ
ることを示す(ステップ262)。FFに一致している場合
には、レジスタ212内のポインタが00に設定され(ステ
ップ263)、そうでない場合には、ポインタが1だけ増
分される(ステップ264)。
がどうか検査される。FFはバッファ・プールが満杯であ
ることを示す(ステップ262)。FFに一致している場合
には、レジスタ212内のポインタが00に設定され(ステ
ップ263)、そうでない場合には、ポインタが1だけ増
分される(ステップ264)。
次に、アービタ28に通じるグローバル命令要求線216が
リセットされ(ステップ265)、ステップ251で処理が再
開される。
リセットされ(ステップ265)、ステップ251で処理が再
開される。
9)レジスタの貸出し処理 有限状態マシン202はまた、バッファを必要とする特定
のユーザに空きバッファのアドレスを提供するため、LE
ASE命令を処理する。
のユーザに空きバッファのアドレスを提供するため、LE
ASE命令を処理する。
LEASE命令の処理は第16図のとおりである。
LEASE要求はバス24から受け取って、作業用レジスタ204
にセーブされる(ステップ270)。
にセーブされる(ステップ270)。
空きバッファ待ち行列制御ブロック内の「臨界しきい値
に達した」標識が検査される(ステップ271)。
に達した」標識が検査される(ステップ271)。
この標識が設定されている場合、空きバッファ待ち行列
が臨界数のバッファを含むことを意味し、迅速処理に対
するLEASE要求のみが受け入れられる。したがってLEASE
要求内の迅速処理ビットが検査される(ステップ27
2)。それが活動状態にある場合、あるいは空きバッフ
ァ待ち行列(FBQ)が臨界満杯状態でない場合にはステ
ップ273に入る。
が臨界数のバッファを含むことを意味し、迅速処理に対
するLEASE要求のみが受け入れられる。したがってLEASE
要求内の迅速処理ビットが検査される(ステップ27
2)。それが活動状態にある場合、あるいは空きバッフ
ァ待ち行列(FBQ)が臨界満杯状態でない場合にはステ
ップ273に入る。
ステップ273で、貸出しバッファ・プールの状況が検査
され、空でないことが判明した場合は、ステップ274に
入る。
され、空でないことが判明した場合は、ステップ274に
入る。
ステップ274で、リターン・コードが生成される。貸出
しバッファ・プールのポインタアウト・レジスタ214に
よって供給されるアドレスの位置が読み取られる。カウ
ンタ208が1だけ減分され、貸出しレジスタ218の内容と
リターン・コードがバス24上に送られる。読み取られた
貸出しバッファ・プール位置の内容が貸出しレジスタ21
8に再ロードされる。
しバッファ・プールのポインタアウト・レジスタ214に
よって供給されるアドレスの位置が読み取られる。カウ
ンタ208が1だけ減分され、貸出しレジスタ218の内容と
リターン・コードがバス24上に送られる。読み取られた
貸出しバッファ・プール位置の内容が貸出しレジスタ21
8に再ロードされる。
ステップ275で、ポインタアウト・レジスタの内容が最
大値FFであるかどうか検査される。FFである場合は、ポ
インタアウト・レジスタ214がリセットされる(ステッ
プ276)。そうでない場合は、レジスタが1だけ増分さ
れる(ステップ277)。
大値FFであるかどうか検査される。FFである場合は、ポ
インタアウト・レジスタ214がリセットされる(ステッ
プ276)。そうでない場合は、レジスタが1だけ増分さ
れる(ステップ277)。
ステップ273で貸出しバッファ・プールが空であると判
定された場合、あるいはステップ272で迅速処理ビット
が活動状態になることが判明した場合はステップ278に
入る。
定された場合、あるいはステップ272で迅速処理ビット
が活動状態になることが判明した場合はステップ278に
入る。
LEASE要求が拒絶されたことを示すリターン・コードが
生成され、LEASE応答がバス24上に送られる。
生成され、LEASE応答がバス24上に送られる。
グローバル命令マシン90と空きバッファ供給マシン92
が、マイクロプロセッサ18により、バス24とレジスタ10
0及び204を介してマイクロプロセッサから送られた制御
メッセージで初期設定されリセットされる。
が、マイクロプロセッサ18により、バス24とレジスタ10
0及び204を介してマイクロプロセッサから送られた制御
メッセージで初期設定されリセットされる。
初期設定処理はマイクロプロセッサ18で実行されるマイ
クロ・コードによって実施される次の各ステップから構
成される。
クロ・コードによって実施される次の各ステップから構
成される。
空きバッファ待ち行列とメッセージ待ち行列制御ブロッ
クのしきい値フィールドが書き込まれる。待ち行列制御
ブロックの待ち行列最大バッファ・カウントが書き込ま
れる。
クのしきい値フィールドが書き込まれる。待ち行列制御
ブロックの待ち行列最大バッファ・カウントが書き込ま
れる。
緩衝空間は、バッファ制御ブロックを書き込んでバッフ
ァをそれらが空きバッファ待ち行列を形成する順序で連
鎖することにより書式化される。
ァをそれらが空きバッファ待ち行列を形成する順序で連
鎖することにより書式化される。
バッファ供給マシンは空きバッファ供給マシン活動制御
メッセージを発行することにより活動化される。次に、
空きバッファ供給マシンが256DEQ FREEグローバル命令
を発行して貸出しバッファ・プール200を充填する。
メッセージを発行することにより活動化される。次に、
空きバッファ供給マシンが256DEQ FREEグローバル命令
を発行して貸出しバッファ・プール200を充填する。
レジスタとカウンタをクリアし、空きバッファ供給マシ
ン92を非活動化するリセット制御メッセージによって、
マシン90と92がリセットされる。
ン92を非活動化するリセット制御メッセージによって、
マシン90と92がリセットされる。
グローバル命令マシン90と有限状態マシン92中に設けら
れる論理回路と有限状態マシンについては詳細は示さな
い。当業者ならそれらの機能を示すフローチャートから
容易に実施できるはずである。
れる論理回路と有限状態マシンについては詳細は示さな
い。当業者ならそれらの機能を示すフローチャートから
容易に実施できるはずである。
10)リンク・インバウンド待ち行列の生成 次に、先に第6図に関して説明したのと同じ連鎖の概念
を利用して、リンク・インバウンド待ち行列がアダプタ
・インターフェース22によってどのように作成されるか
について説明する。
を利用して、リンク・インバウンド待ち行列がアダプタ
・インターフェース22によってどのように作成されるか
について説明する。
データ移動受信回路(RCV)86は次の諸機能を実行す
る。
る。
第17図において、RCV回路86は、アダプタ14が受け取っ
たインバウンド・データをバス300を介して獲得する。
たインバウンド・データをバス300を介して獲得する。
RCV回路86は、フリップ/フロップ・バッファ・インタ
ーフェース機構を有している。この機構は、フリップ制
御レジスタ303を伴ったフリップ・バッファ302と、フロ
ップ制御レジスタ305を伴ったフロップ・バッファ304を
含む。制御バッファ303及び305は、フリップ/フロップ
・バッファ302及び304を処理するのに使用される情報を
保持する。フリップ/フロップ・バッファ302及び304の
最大容量は、受信するデータ・バーストの長さにより異
なる。ただし、受信データ・バーストが256バイト構成
であるものと仮定する。
ーフェース機構を有している。この機構は、フリップ制
御レジスタ303を伴ったフリップ・バッファ302と、フロ
ップ制御レジスタ305を伴ったフロップ・バッファ304を
含む。制御バッファ303及び305は、フリップ/フロップ
・バッファ302及び304を処理するのに使用される情報を
保持する。フリップ/フロップ・バッファ302及び304の
最大容量は、受信するデータ・バーストの長さにより異
なる。ただし、受信データ・バーストが256バイト構成
であるものと仮定する。
RCV回路86はまた有限状態マシン306と有限状態マシン30
8を含む。マシン306はフリップ/フロップ・バッファ30
2及び304からのデータを多重化回路80を介してメモリ10
に転送する。マシン308は、バッファとメッセージを連
鎖させ、それらを待ち行列に入れてリンク・インバウン
ド待ち行列LIQを作成する。
8を含む。マシン306はフリップ/フロップ・バッファ30
2及び304からのデータを多重化回路80を介してメモリ10
に転送する。マシン308は、バッファとメッセージを連
鎖させ、それらを待ち行列に入れてリンク・インバウン
ド待ち行列LIQを作成する。
メッセージの転送はスケジューリング回路310の制御下
で行なわれる。これは、有限状態マシン306及び308によ
って実行される各種操作のタイミングを調整する。
で行なわれる。これは、有限状態マシン306及び308によ
って実行される各種操作のタイミングを調整する。
初期設定時に、制御ブロック(CB)・バッファ312は一
部の制御情報を含む制御ブロックCBを受け取る。これら
の制御ブロックCBは、データ・バーストが対応するリン
ク・インバウンド待ち行列に転送されたときに更新され
る。データ・バーストがそこからリンク・インバウンド
待ち行列に転送される転送先の選択されたユーザに関す
る制御ブロックが、CBレジスタ314に記憶される。
部の制御情報を含む制御ブロックCBを受け取る。これら
の制御ブロックCBは、データ・バーストが対応するリン
ク・インバウンド待ち行列に転送されたときに更新され
る。データ・バーストがそこからリンク・インバウンド
待ち行列に転送される転送先の選択されたユーザに関す
る制御ブロックが、CBレジスタ314に記憶される。
有限状態マシン306と308はアダプタに接続された複数の
ユーザによって共用される。また、両方のマシンは、特
定のユーザ・データ・バーストを処理するたびに、その
ユーザに対応する制御情報の状態を知っていなくてはな
らない。
ユーザによって共用される。また、両方のマシンは、特
定のユーザ・データ・バーストを処理するたびに、その
ユーザに対応する制御情報の状態を知っていなくてはな
らない。
マシン306はデータ・バーストの処理を開始するとき、
対応する制御ブロックをバッファ312からレジスタ314に
ロードする。制御ブロックのアドレスは、フリップ/フ
ロップ制御レジスタ303及び305にロードされた識別フィ
ールドによって提供される。それが、アドレス・バス31
3を介してバッファ312に供給される。制御ブロックのロ
ーディングは、現在のデータ・バーストに関連するユー
ザが前のユーザとは異なる場合にのみ行なわれる。次
に、レジスタ314の内容がマシン306によって使用され、
バースト処理時に更新され、全バースト・データがリン
ク・インバウンド待ち行列に転送された後に、その内容
がバッファ312にセーブされる。したがって、他のユー
ザに注意しながら特定のユーザの状態を保持し、次のバ
ーストを処理しなくてはならないときに、同じ条件で再
開することができる。
対応する制御ブロックをバッファ312からレジスタ314に
ロードする。制御ブロックのアドレスは、フリップ/フ
ロップ制御レジスタ303及び305にロードされた識別フィ
ールドによって提供される。それが、アドレス・バス31
3を介してバッファ312に供給される。制御ブロックのロ
ーディングは、現在のデータ・バーストに関連するユー
ザが前のユーザとは異なる場合にのみ行なわれる。次
に、レジスタ314の内容がマシン306によって使用され、
バースト処理時に更新され、全バースト・データがリン
ク・インバウンド待ち行列に転送された後に、その内容
がバッファ312にセーブされる。したがって、他のユー
ザに注意しながら特定のユーザの状態を保持し、次のバ
ーストを処理しなくてはならないときに、同じ条件で再
開することができる。
制御ブロックの内容は次のとおりである。
− 現メッセージ・アドレス(2バイト): メモリ10−2に現在アセンブルされているメッセージの
アドレス。このフィールドは、メッセージの第1データ
・バーストが処理されるたびにマシン306及び308により
更新される。これは、空きメッセージ供給マシン92から
獲得された空きバッファのアドレスである。
アドレス。このフィールドは、メッセージの第1データ
・バーストが処理されるたびにマシン306及び308により
更新される。これは、空きメッセージ供給マシン92から
獲得された空きバッファのアドレスである。
− 現バッファ・データ記憶アドレス(2バイト): メッセージ・データを記憶するために現在使用されてい
るバッファのアドレス。メッセージのはじめに、このフ
ィールドはメッセージ・アドレスと同じ値で初期設定さ
れる。次に、現在のバッファが満杯になり、現在のメッ
セージのデータをリンク・インバウンド待ち行列に引き
続き記憶するために新しいバッファが必要となるたびに
このアドレスは更新される。
るバッファのアドレス。メッセージのはじめに、このフ
ィールドはメッセージ・アドレスと同じ値で初期設定さ
れる。次に、現在のバッファが満杯になり、現在のメッ
セージのデータをリンク・インバウンド待ち行列に引き
続き記憶するために新しいバッファが必要となるたびに
このアドレスは更新される。
− メッセージ累積バイト・カウント(2バイト): 受信されているメッセージによりすでにメモリ10−2に
入れられたバイトのカウント。このカウントは、リンク
・インバウンド待ち行列内で使用されている空間を表
し、着信メッセージに対する有効に受け取ったバイト数
とは異なることがある。たとえば、バッファ・オフセッ
トの値がこのカウントに含まれる。実際に、このフィー
ルドは、現バッファの内部のどのアドレスに現在のバー
ストのデータを記憶するべきかを判定するのに使用され
る。(8個の最下位バイトが最高256バイトのデータを
含むことのできるバッファ内の変位に対応する)。
入れられたバイトのカウント。このカウントは、リンク
・インバウンド待ち行列内で使用されている空間を表
し、着信メッセージに対する有効に受け取ったバイト数
とは異なることがある。たとえば、バッファ・オフセッ
トの値がこのカウントに含まれる。実際に、このフィー
ルドは、現バッファの内部のどのアドレスに現在のバー
ストのデータを記憶するべきかを判定するのに使用され
る。(8個の最下位バイトが最高256バイトのデータを
含むことのできるバッファ内の変位に対応する)。
− オフセット(1バイト): メッセージの第1バッファ内部の、第1有意データ・バ
イトをロードする場所(バッファ変位置)。これはマイ
クロコードによって設定され、ワード境界上になくては
ならない(4バイトの倍数)。
イトをロードする場所(バッファ変位置)。これはマイ
クロコードによって設定され、ワード境界上になくては
ならない(4バイトの倍数)。
− カットオフ(1バイト): メッセージを記憶するのに使用できるバッファの最大
数。マイクロコードによって設定される。
数。マイクロコードによって設定される。
マシン306は、所与のメッセージに対するデータ・バー
ストを引き続き記憶するために空きバッファを必要とす
るたびに、その限界を超えていないかどうか検査する。
限界を超えた場合は、マシン306はメッセージをクロー
ズしてメッセージ連鎖制御ブロックMCCB中で対応するエ
ラー状況を設定し、その制御ブロック内でカットオフ・
フラッシュ・ビットをセット・アップする。
ストを引き続き記憶するために空きバッファを必要とす
るたびに、その限界を超えていないかどうか検査する。
限界を超えた場合は、マシン306はメッセージをクロー
ズしてメッセージ連鎖制御ブロックMCCB中で対応するエ
ラー状況を設定し、その制御ブロック内でカットオフ・
フラッシュ・ビットをセット・アップする。
− 内部フラグ(各1ビット): 処理標識内のメッセージ: 新しいメッセージを開始す
る(第1バーストがオンで最終バーストがオフである)
とき、マシン306によって設定される。メッセージの処
理を完了した(最終バーストがオンである)とき、マシ
ン306によってリセットされる。メッセージの処理を完
了した(最終バーストがオンである)とき、マシン306
によってリセットされる。この標識は、第1バーストが
オン状態になることが判明したとき、前のメッセージが
まだ処理中であるか否かを知り、次に新しい処理を開始
する前にそれを完了するため、マシン306によって検査
される。
る(第1バーストがオンで最終バーストがオフである)
とき、マシン306によって設定される。メッセージの処
理を完了した(最終バーストがオンである)とき、マシ
ン306によってリセットされる。メッセージの処理を完
了した(最終バーストがオンである)とき、マシン306
によってリセットされる。この標識は、第1バーストが
オン状態になることが判明したとき、前のメッセージが
まだ処理中であるか否かを知り、次に新しい処理を開始
する前にそれを完了するため、マシン306によって検査
される。
− カットオフ・フラッシュ標識: メッセージを記憶するのに必要なバッファの数がカット
オフ限界を超えたときマシン306によって設定される。
このメッセージに関する次のデータ・バーストはすべて
フラッシュされる。新しいメッセージの最初のデータ・
バーストが発生したとき、マシン306によってリセット
される。
オフ限界を超えたときマシン306によって設定される。
このメッセージに関する次のデータ・バーストはすべて
フラッシュされる。新しいメッセージの最初のデータ・
バーストが発生したとき、マシン306によってリセット
される。
フリップ/フロップ・バッファ機構302及び304は次に説
明するように動作する。
明するように動作する。
通常の動作モードでは、アダプタ14はデータ・バースト
を受信しアセンブルすると、フリップ/フロップ・バー
スト・バッファ302または304にそれを充填し、マシン
は、その内容をリンク・インバウンド待ち行列に転送し
てフリップ/フロップ・バースト・バッファを空にす
る。フリップ/フロップ・バースト・バッファ302及び3
04が共に満杯の場合にはアダプタ14は、マシン306がフ
リップ/フロップ・バッファ302または304の処理を完了
するまで待たなくてはならない。
を受信しアセンブルすると、フリップ/フロップ・バー
スト・バッファ302または304にそれを充填し、マシン
は、その内容をリンク・インバウンド待ち行列に転送し
てフリップ/フロップ・バースト・バッファを空にす
る。フリップ/フロップ・バースト・バッファ302及び3
04が共に満杯の場合にはアダプタ14は、マシン306がフ
リップ/フロップ・バッファ302または304の処理を完了
するまで待たなくてはならない。
各フリップ/フロップ・バッファ302及び304に関連する
制御フィールドにより、データ・バーストを処理するの
に必隣なすべての制御情報が渡され、レジスタ303及び3
05に記憶される。
制御フィールドにより、データ・バーストを処理するの
に必隣なすべての制御情報が渡され、レジスタ303及び3
05に記憶される。
このフリップ/フロップ制御フィールドの内容は次のと
おりである: − ユーザ識別(7ビット): アダプタ14によってロードされ、データ・バーストがど
のユーザに属するかを指示する。
おりである: − ユーザ識別(7ビット): アダプタ14によってロードされ、データ・バーストがど
のユーザに属するかを指示する。
− バースト・レディ(1ビット): アダプタ14によって設定され、対応するフリップ/フロ
ップ・バッファが、マシン306が処理できる状態にある
ことを、すなわちデータがロードされ、関連する制御が
すべて設定されていることを指示する。リンク・インバ
ウンド待ち行列内のすべてのデータを転送し、フリップ
/フロップ・バッファが再度空いてアダプタ14から供給
を受けられる状態になったときに、マシン306によって
リセットされる。フリップ/フロップ・バースト・レデ
ィ標識が共にオンの状態のときは、アダプタ14はそれら
のうちの1つが空き状態になるまで待たなくてはならな
い。
ップ・バッファが、マシン306が処理できる状態にある
ことを、すなわちデータがロードされ、関連する制御が
すべて設定されていることを指示する。リンク・インバ
ウンド待ち行列内のすべてのデータを転送し、フリップ
/フロップ・バッファが再度空いてアダプタ14から供給
を受けられる状態になったときに、マシン306によって
リセットされる。フリップ/フロップ・バースト・レデ
ィ標識が共にオンの状態のときは、アダプタ14はそれら
のうちの1つが空き状態になるまで待たなくてはならな
い。
− ヘッダまたはデータ標識(1ビット): アダプタ14はよって設定され、データ・バースト・バッ
ファの内容を「ヘッダ」とみなして、リンク・インバウ
ンド待ち行列にメッセージ・バイト・アドレス・ゼロか
ら順に記憶すべきことを指示する。単一のメッセージの
処理中に複数のヘッダが発生した場合は、それらは相互
にオーバーレイする。
ファの内容を「ヘッダ」とみなして、リンク・インバウ
ンド待ち行列にメッセージ・バイト・アドレス・ゼロか
ら順に記憶すべきことを指示する。単一のメッセージの
処理中に複数のヘッダが発生した場合は、それらは相互
にオーバーレイする。
− 第1バースト(1ビット): アダプタ14によって設定され、関連するバースト(ヘッ
ダまたはデータ)が新しいメッセージの第1バーストで
あることを指示する。これはまた、前のメッセージが
「最終バースト」によって終了しないときにそのメッセ
ージをクローズする(したがって1個または数個のフラ
グで分離された2つのSDLCフレームを効率的に処理する
ことができる)。
ダまたはデータ)が新しいメッセージの第1バーストで
あることを指示する。これはまた、前のメッセージが
「最終バースト」によって終了しないときにそのメッセ
ージをクローズする(したがって1個または数個のフラ
グで分離された2つのSDLCフレームを効率的に処理する
ことができる)。
− 最終バースト(1ビット): アダプタ14によって設定され、関連するバースト(ヘッ
ダまたはデータ)がメッセージの最終バーストであり、
回路308がメッセージをクローズし、それを前のメッセ
ージに(必要に応じて)連鎖し、関連するリンク・イン
バウンド待ち行列に入れなくてはならないことを指示す
る。
ダまたはデータ)がメッセージの最終バーストであり、
回路308がメッセージをクローズし、それを前のメッセ
ージに(必要に応じて)連鎖し、関連するリンク・イン
バウンド待ち行列に入れなくてはならないことを指示す
る。
− バースト・バイト・カウント(9バイト): アダプタ14によってロードされ、現在のバースト内の有
意バイトの数を指示する。中間バーストの場合は、これ
は4バイトの倍数でなくてはならない。最終データの場
合及びヘッダ・タイプのバーストの場合はこれは任意の
値でよい。
意バイトの数を指示する。中間バーストの場合は、これ
は4バイトの倍数でなくてはならない。最終データの場
合及びヘッダ・タイプのバーストの場合はこれは任意の
値でよい。
− メッセージ状況有効(1ビット): アダプタ14によって設定され、メッセージ状況フィール
ドが有効であることを指示する。
ドが有効であることを指示する。
− メッセージ状況(2バイト) アダプタ14によって充填され、経路指定情報など処理中
のメッセージに関する情報を与え、あるいはデータと並
列に情報を転送する。この状況は、マシン306によって
メモリ10内のメッセージ制御ブロックに転送される。
のメッセージに関する情報を与え、あるいはデータと並
列に情報を転送する。この状況は、マシン306によって
メモリ10内のメッセージ制御ブロックに転送される。
通常1個の状況しかメッセージと並列に送ることができ
ない。状況が複数発生した場合には、それらは相互にオ
ーバーレイし、最後の状況が前の状況に優先する。明示
的最終バースト標識がオンで終わらないメッセージに単
一のバースト・メッセージ(第1及び最終バースト標識
が共にオン)が続くメッセージ状況は許されない。(そ
のような場合、その状況が前のメッセージに属するかま
たは現在のメッセージに属するかを判定することは不可
能である)。
ない。状況が複数発生した場合には、それらは相互にオ
ーバーレイし、最後の状況が前の状況に優先する。明示
的最終バースト標識がオンで終わらないメッセージに単
一のバースト・メッセージ(第1及び最終バースト標識
が共にオン)が続くメッセージ状況は許されない。(そ
のような場合、その状況が前のメッセージに属するかま
たは現在のメッセージに属するかを判定することは不可
能である)。
第18図は、電源投入リセット以降のスケジューラ310の
状態図である。
状態図である。
電源投入リセット時には、データ転送マシン306内のフ
リップ/フロップ標識がフリップ・バースト・バッファ
302を指す。これは、フリップ標識線320を活動化し、フ
ロップ標識線321を非活動化する(ステップ330)。
リップ/フロップ標識がフリップ・バースト・バッファ
302を指す。これは、フリップ標識線320を活動化し、フ
ロップ標識線321を非活動化する(ステップ330)。
マシン306及び308は、遊休状態になり、制御フリップ・
レジスタ303内で対応するバースト・レディ標識がアダ
プタによって設定されるのを待つ(ステップ331)。
レジスタ303内で対応するバースト・レディ標識がアダ
プタによって設定されるのを待つ(ステップ331)。
次に、ステップ331で、制御レジスタ303または305内の
ユーザ識別を制御ブロック・レジスタ314と比較して、
ユーザ番号が変更されているかどうかが検査される。
ユーザ識別を制御ブロック・レジスタ314と比較して、
ユーザ番号が変更されているかどうかが検査される。
変更されている場合には、新しい制御ブロックがバッフ
ァ312からレジスタ314に転送される(ステップ333)。
ァ312からレジスタ314に転送される(ステップ333)。
ユーザ番号が変更されていない場合、または制御ブロッ
クのローディング後に、後で第19図を参照して説明する
ようにフリップ・バッファ・データが処理され、リンク
・インバウンド待ち行列に転送される(ステップ33
4)。
クのローディング後に、後で第19図を参照して説明する
ようにフリップ・バッファ・データが処理され、リンク
・インバウンド待ち行列に転送される(ステップ33
4)。
処理の終わりに、制御ブロックがセーブされる(ステッ
プ335)。フリップ・レジスタ内のバースト・レディ標
識がリセットされる(ステップ336)。
プ335)。フリップ・レジスタ内のバースト・レディ標
識がリセットされる(ステップ336)。
フリップ/フロップ標識が検査される(ステップ33
7)。それがFLIPに一致する場合には、FLOPに変更され
る(ステップ338)。FLOPに一致する場合は、FLIPに変
更される(ステップ339)。これによって前述のフリッ
プ/フロップ機構が動作する。
7)。それがFLIPに一致する場合には、FLOPに変更され
る(ステップ338)。FLOPに一致する場合は、FLIPに変
更される(ステップ339)。これによって前述のフリッ
プ/フロップ機構が動作する。
次に、ステップ331でスケジューリング処理が再開され
る。
る。
次に、第19図を参照してデータ転送操作(ステップ33
4)について説明する。
4)について説明する。
データ・バーストの特性に応じて、次の4つの処理段階
を実行しなくてはならない。
を実行しなくてはならない。
− 新しいメッセージを開始し、場合によっては前のメ
ッセージをクローズするメッセージ開始段階 − 状況情報をメッセージMCCBに転送する状況段階 − 第1バッファのアドレス0になるヘッダまたはデー
タを作成中のメッセージの現バッファに転送するヘッダ
またはデータ段階 − 現メッセージをクローズして、対応するLIQ待ち行
列に入れるメッセージ終了段階 メッセージ開始段階の第1ステップ350で、有限状態マ
シン306が線316上でアービタ28に対する要求を設定する
(第17図)。アービタは線317上に許可信号を出して応
答する。
ッセージをクローズするメッセージ開始段階 − 状況情報をメッセージMCCBに転送する状況段階 − 第1バッファのアドレス0になるヘッダまたはデー
タを作成中のメッセージの現バッファに転送するヘッダ
またはデータ段階 − 現メッセージをクローズして、対応するLIQ待ち行
列に入れるメッセージ終了段階 メッセージ開始段階の第1ステップ350で、有限状態マ
シン306が線316上でアービタ28に対する要求を設定する
(第17図)。アービタは線317上に許可信号を出して応
答する。
制御フリップ/フロップ・レジスタ303または305内の第
1バースト・ビットが検査される(ステップ351)。
1バースト・ビットが検査される(ステップ351)。
これが1に設定されていることが判明した場合、メッセ
ージの第1バーストを受け取ったことを意味し、制御ブ
ロック・レジスタ314内の処理内部フラグ中のメッセー
ジを検査することにより、前のメッセージがなお処理中
であるかどうか検査される(ステップ352)。このフラ
グが1に設定されている場合、前のメッセージの処理を
完了しなくてはならない(ステップ353)。このフラグ
が0に設定されている場合、あるいは前のメッセージの
処理が完了したとき、新しいメッセージの処理が開始さ
れる(ステップ354)。これらのステップ352ないし354
については後で第20図を参照して説明する。
ージの第1バーストを受け取ったことを意味し、制御ブ
ロック・レジスタ314内の処理内部フラグ中のメッセー
ジを検査することにより、前のメッセージがなお処理中
であるかどうか検査される(ステップ352)。このフラ
グが1に設定されている場合、前のメッセージの処理を
完了しなくてはならない(ステップ353)。このフラグ
が0に設定されている場合、あるいは前のメッセージの
処理が完了したとき、新しいメッセージの処理が開始さ
れる(ステップ354)。これらのステップ352ないし354
については後で第20図を参照して説明する。
次に、フリップ/フロップ制御レジスタ303/305内のメ
ッセージ状況有効ビットが検査される(ステップ35
5)。これが1に設定されている場合は、その状況が処
理される(ステップ356)。そうでない場合は、ステッ
プ357に入る。ステップ357は、データ転送の第1ステッ
プである。
ッセージ状況有効ビットが検査される(ステップ35
5)。これが1に設定されている場合は、その状況が処
理される(ステップ356)。そうでない場合は、ステッ
プ357に入る。ステップ357は、データ転送の第1ステッ
プである。
まず初めに、受信バーストがヘッダ情報を含むのかまた
はデータを含むのかについて検査される。
はデータを含むのかについて検査される。
データを含む場合には、バースト・バイト・カウントが
検査される(ステップ358)。それが0より小さい場
合、CBレジスタ314内のメッセージ・バイト・カウント
が更新される(ステップ359)。これについては後で第2
1図を参照して説明する。
検査される(ステップ358)。それが0より小さい場
合、CBレジスタ314内のメッセージ・バイト・カウント
が更新される(ステップ359)。これについては後で第2
1図を参照して説明する。
0より小さくない場合には、フリップ/フロップ・バッ
ファ302ないしは304内のデータ・バーストが、後で第21
図に関して説明するように、データ記憶メモリ10−2内
のメッセージ・バッファに転送される(ステップ36
0)。
ファ302ないしは304内のデータ・バーストが、後で第21
図に関して説明するように、データ記憶メモリ10−2内
のメッセージ・バッファに転送される(ステップ36
0)。
ステップ357でバーストがヘッダ情報を含むことが判明
した場合、バッファの内容がメモリ・バッファ部分のメ
ッセージ・アドレス0に転送される(ステップ361)。
した場合、バッファの内容がメモリ・バッファ部分のメ
ッセージ・アドレス0に転送される(ステップ361)。
次に、ステップ362で受信バーストがメッセージの最終
バーストであるかどうか検査される。最終バーストであ
る場合は、後で第21図に関して説明するように、メッセ
ージの終わりが処理される(ステップ363)。最終バー
ストでない場合には、これでバースト処理は終わり、ア
ービタ28に対する要求がリセットされる(ステップ36
2)。
バーストであるかどうか検査される。最終バーストであ
る場合は、後で第21図に関して説明するように、メッセ
ージの終わりが処理される(ステップ363)。最終バー
ストでない場合には、これでバースト処理は終わり、ア
ービタ28に対する要求がリセットされる(ステップ36
2)。
メッセージ開始処理は第20図のとおりである。
ステップ351で、有限状態マシン306が、受信バーストが
メッセージの第1バーストであったかどうか検査する。
メッセージの第1バーストであったかどうか検査する。
第1バーストでなかった場合は、マシン306は状況及び
ヘッダ/データ処理段階へ進む。
ヘッダ/データ処理段階へ進む。
第1バーストであった場合には、マシン306は貸出しレ
ジスタ218の内容を読み取って、空きバッファ供給マシ
ン92からメモリ10内の空きバッファ・アドレスを獲得す
る。このレジスタの内容がセーブされる(ステップ37
0)。
ジスタ218の内容を読み取って、空きバッファ供給マシ
ン92からメモリ10内の空きバッファ・アドレスを獲得す
る。このレジスタの内容がセーブされる(ステップ37
0)。
次に、マシン306は、それに対する「最終バースト」が
すでに受信された、前のメッセージがまだ処理中である
かどうか検査する。これはレジスタ314内のメッセージ
処理中ビットを検査することによって行なわれる(ステ
ップ371)。
すでに受信された、前のメッセージがまだ処理中である
かどうか検査する。これはレジスタ314内のメッセージ
処理中ビットを検査することによって行なわれる(ステ
ップ371)。
このビットが0であることが判明した場合は、前のメッ
セージが処理されることを意味し、メッセージ処理中ビ
ットが1に設定される(ステップ372)。
セージが処理されることを意味し、メッセージ処理中ビ
ットが1に設定される(ステップ372)。
次に、バースト・ユーザに対応するリンク・インバウン
ド待ち行列が空の場合、マシン306は要求テーブル89を
検査する(ステップ373)。
ド待ち行列が空の場合、マシン306は要求テーブル89を
検査する(ステップ373)。
それが空でない場合は、現メッセージがリンク・インバ
ウンド待ち行列内の前のメッセージに連鎖される(ステ
ップ374)。この動作を実行するため、マシン308はステ
ップ370でセーブされた空きバッファのアドレスを、リ
ンク・インバウンド待ち行列の最終メッセージのMCCBブ
ロックの次のメッセージ・アドレス・フィールドに書き
込む。この最終リンク・インバウンド待ち行列メッセー
ジのアドレスは、待ち行列の待ち行列制御ブロックQCB
の末尾フィールドにある。
ウンド待ち行列内の前のメッセージに連鎖される(ステ
ップ374)。この動作を実行するため、マシン308はステ
ップ370でセーブされた空きバッファのアドレスを、リ
ンク・インバウンド待ち行列の最終メッセージのMCCBブ
ロックの次のメッセージ・アドレス・フィールドに書き
込む。この最終リンク・インバウンド待ち行列メッセー
ジのアドレスは、待ち行列の待ち行列制御ブロックQCB
の末尾フィールドにある。
前のメッセージがまだ保留中の場合は、ステップ376及
び377に入る。マシン308は、前のメッセージの総メッセ
ージ・バイト・カウントをそのMCCBブロックに記憶す
る。同時に、マシン308はステップ370でセーブされたア
ドレスを同じMCCBブロックの次のメッセージ・アドレス
・フィールドに書き込むことにより、新しいメッセージ
連鎖を行なう。したがって前のメッセージ・バイト・カ
ウントを書き込み、連鎖操作を実行するのにたった1回
のメモリ・アクセスだけで済む。このため、性能が向上
し、1個のフラグのみによって分離された短メッセージ
を受信することが可能となる。
び377に入る。マシン308は、前のメッセージの総メッセ
ージ・バイト・カウントをそのMCCBブロックに記憶す
る。同時に、マシン308はステップ370でセーブされたア
ドレスを同じMCCBブロックの次のメッセージ・アドレス
・フィールドに書き込むことにより、新しいメッセージ
連鎖を行なう。したがって前のメッセージ・バイト・カ
ウントを書き込み、連鎖操作を実行するのにたった1回
のメモリ・アクセスだけで済む。このため、性能が向上
し、1個のフラグのみによって分離された短メッセージ
を受信することが可能となる。
ステップ377で、前のメッセージが対応するユーザリン
ク・インバウンド待ち行列に入れられる。
ク・インバウンド待ち行列に入れられる。
データ/ヘッダ・データ転送の第1ステップ(357)
で、バーストがデータまたはヘッダ情報のいずれを含む
かについて検査される。これは、レジスタ314内でヘッ
ダ/データ標識が1であるかどうかを検査することによ
って行なわれる。
で、バーストがデータまたはヘッダ情報のいずれを含む
かについて検査される。これは、レジスタ314内でヘッ
ダ/データ標識が1であるかどうかを検査することによ
って行なわれる。
1の場合には、バーストはヘッダ情報を含み、マシン30
6はそれらの情報を、割り当てられたバッファのメッセ
ージ・アドレス0に転送する。
6はそれらの情報を、割り当てられたバッファのメッセ
ージ・アドレス0に転送する。
これは、オフセット機構のために第1バッファ内に十分
なスペースがあることを前提条件としている。そうでな
ければ、ヘッダの最終バイトがメッセージのデータ部に
予約されている空間とオーバラップすることになる。次
に、ステップ362でメッセージ終了段階に入る。
なスペースがあることを前提条件としている。そうでな
ければ、ヘッダの最終バイトがメッセージのデータ部に
予約されている空間とオーバラップすることになる。次
に、ステップ362でメッセージ終了段階に入る。
データ/ヘッダ標識が0である場合、バースト・バッフ
ァはデータを含む可能性がある。マシン306はバッファ
制御レジスタ303または305内のバースト・バイト・カウ
ントが正であるかどうか検査することによりバースト・
バッファ内にデータが存在するかどうかを検査する(ス
テップ358)。
ァはデータを含む可能性がある。マシン306はバッファ
制御レジスタ303または305内のバースト・バイト・カウ
ントが正であるかどうか検査することによりバースト・
バッファ内にデータが存在するかどうかを検査する(ス
テップ358)。
データが存在しない場合には、ステップ359に入る。こ
れはすなわち、受信バーストが前のメッセージの最終バ
ーストであり、総メッセージ・バイト・カウントだけ
を、前のメッセージのMCCBブロック内に記憶する前に更
新しなくてはならないことを意味する。レジスタ303ま
たは305内の最終バーストがオンである場合には、バー
スト・バイト・カウントは0または負となる可能性があ
るが、−2より小さくなることはない。前のバースト内
の受信バイトがHDLCフレームのFCS(フレーム検査シー
ケンス)バイトを含んでいた場合には、このカウントが
負となり得る。
れはすなわち、受信バーストが前のメッセージの最終バ
ーストであり、総メッセージ・バイト・カウントだけ
を、前のメッセージのMCCBブロック内に記憶する前に更
新しなくてはならないことを意味する。レジスタ303ま
たは305内の最終バーストがオンである場合には、バー
スト・バイト・カウントは0または負となる可能性があ
るが、−2より小さくなることはない。前のバースト内
の受信バイトがHDLCフレームのFCS(フレーム検査シー
ケンス)バイトを含んでいた場合には、このカウントが
負となり得る。
次にマシン306はメッセージ終了処理段階へ進む。
バースト・バイト・カウントが正の場合は、ステップ38
0に入る。これは、バースト・バッファ内に処理すべき
データが存在することを意味する。
0に入る。これは、バースト・バッファ内に処理すべき
データが存在することを意味する。
マシン306はデータ・バーストをメモリ10内のデータ・
バッファに一度に4バイトずつ転送するループを開始す
る。
バッファに一度に4バイトずつ転送するループを開始す
る。
まず、マシン306は、制御ブロック・レジスタ内のメッ
セージ・バイト・カウントが256の倍数であるかどうか
検査することによって、現在のデータ記憶バッファ内に
まだスペースが存在するかどうかを検査する(ステップ
380)。
セージ・バイト・カウントが256の倍数であるかどうか
検査することによって、現在のデータ記憶バッファ内に
まだスペースが存在するかどうかを検査する(ステップ
380)。
カウントが256の倍数である場合は、現バッファは満杯
であり、回路303が空きバッファ供給マシン92の貸出し
レジスタを読み取って新しいバッファ・アドレスを獲得
する。このバッファはそのBCCB及びバイト・カウントを
更新することにより前のメッセージに連鎖される(ステ
ップ381)。
であり、回路303が空きバッファ供給マシン92の貸出し
レジスタを読み取って新しいバッファ・アドレスを獲得
する。このバッファはそのBCCB及びバイト・カウントを
更新することにより前のメッセージに連鎖される(ステ
ップ381)。
現バッファが満杯でない場合、あるいはステップ381の
後で、データ転送が開始される。マシン306は、バッフ
ァ302または304からの4データ・バイトを、制御ブロッ
ク・レジスタ314内の現バッファ・データ記憶アドレス
と転送済みバイト数とから算出されたメモリ10内のアド
レスに転送する(ステップ382)。
後で、データ転送が開始される。マシン306は、バッフ
ァ302または304からの4データ・バイトを、制御ブロッ
ク・レジスタ314内の現バッファ・データ記憶アドレス
と転送済みバイト数とから算出されたメモリ10内のアド
レスに転送する(ステップ382)。
マシン306はフリップ/フロップ制御レジスタ303/305内
の残りのバースト・バイト・カウントを減分し、制御ブ
ロック・レジスタ314内のメッセージ累積バイト・カウ
ントを増分する。
の残りのバースト・バイト・カウントを減分し、制御ブ
ロック・レジスタ314内のメッセージ累積バイト・カウ
ントを増分する。
ステップ383でバースト・バイト・カウントが検査され
る。0でないことが判明した場合は、ステップ380に入
る。
る。0でないことが判明した場合は、ステップ380に入
る。
0である場合は、バッファ終了段階に入る。
ステップ362で処理済みバーストがメッセージの最終バ
ーストであることが判明した場合、回路308はそのメッ
セージ連鎖制御ブロックを更新してメッセージをクロー
ズしなくてはならない(ステップ384)。回路308は総メ
ッセージ・バイト・カウントを記憶し、次のメッセージ
・アドレスをFFに設定して、このメッセージが、そのユ
ーザに関し受信された最後のメッセージであり、処理中
の次のメッセージはないことを示す。
ーストであることが判明した場合、回路308はそのメッ
セージ連鎖制御ブロックを更新してメッセージをクロー
ズしなくてはならない(ステップ384)。回路308は総メ
ッセージ・バイト・カウントを記憶し、次のメッセージ
・アドレスをFFに設定して、このメッセージが、そのユ
ーザに関し受信された最後のメッセージであり、処理中
の次のメッセージはないことを示す。
次に(ステップ385)、ENQUEUEグローバル命令の優先順
位が最高であるため、完了されつつあるメッセージが、
そのメッセージに関連するユーザに対応するリンク・イ
ンバウンド待ち行列に入れられる。
位が最高であるため、完了されつつあるメッセージが、
そのメッセージに関連するユーザに対応するリンク・イ
ンバウンド待ち行列に入れられる。
制御バッファ314内のメッセージ処理中ビットがリセッ
トされる。
トされる。
第18図ないし第21図に示すような諸機能を実施するに
は、有限状態マシン306及び308が、バス24にアクセスし
て、メモリ10内にデータを書き込むか、または貸出しレ
ジスタ218から空きバッファ・アドレスを読み取らなく
てはならない。いずれの場合も、回路306は、アービタ2
8からバスを要求しなくてはならない。
は、有限状態マシン306及び308が、バス24にアクセスし
て、メモリ10内にデータを書き込むか、または貸出しレ
ジスタ218から空きバッファ・アドレスを読み取らなく
てはならない。いずれの場合も、回路306は、アービタ2
8からバスを要求しなくてはならない。
これは、マシン306及び308がバス24にアクセスする必要
があるとき線316上でセットされ、バス24がもう必要で
なくなったときそれらのマシンによってリセットされる
バス要求によって行なわれる。線317上のバス許可信号
が、マシン306及び308にバスの使用を許可するため、ア
ービタ28によってセットされ、要求信号がリセットされ
た後にアービタ8によってリセットされる。
があるとき線316上でセットされ、バス24がもう必要で
なくなったときそれらのマシンによってリセットされる
バス要求によって行なわれる。線317上のバス許可信号
が、マシン306及び308にバスの使用を許可するため、ア
ービタ28によってセットされ、要求信号がリセットされ
た後にアービタ8によってリセットされる。
ステーション・サービス88とRCV回路86の間のインター
フェースは、要求テーブルを使って行なわれる。このテ
ーブルは、後で説明するように、ステーション・サービ
スのスケジューリングを行なうための情報を含む。
フェースは、要求テーブルを使って行なわれる。このテ
ーブルは、後で説明するように、ステーション・サービ
スのスケジューリングを行なうための情報を含む。
11)リンク・アウトバウンド待ち行列からのデータ転送 データ移動送信回路(XMIT)86は、次の3つの主要機能
を遂行する。
を遂行する。
−リンク・アウトバウンド待ち行列に置かれている、以
前にステーション・サービス88によってLOQから外され
たメッセージから書式化データを獲得する。
前にステーション・サービス88によってLOQから外され
たメッセージから書式化データを獲得する。
−アダプタからの要求時に、フリップ/フロップ機構を
介して、アダプタにこれらのデータを転送する。
介して、アダプタにこれらのデータを転送する。
第22図に示されるこのXMIT回路86は、データ移動受信回
路(RCV)86の構造と似た構造をもつ。
路(RCV)86の構造と似た構造をもつ。
XMIT回路86は、関連制御レジスタ503及び505を備えたフ
リップ・バッファ502とフロップ・バッファ504を有す
る。フリップ/フロップ・バッファ502及び530の最大容
量は、データ・バーストの長さ(好ましい実施例では25
6バイト)によって異なる。
リップ・バッファ502とフロップ・バッファ504を有す
る。フリップ/フロップ・バッファ502及び530の最大容
量は、データ・バーストの長さ(好ましい実施例では25
6バイト)によって異なる。
制御レジスタ503及び505は、それぞれフリップ/フロッ
プ・データ・バッファ502及び504を処理するのに使用さ
れる情報を保持する。
プ・データ・バッファ502及び504を処理するのに使用さ
れる情報を保持する。
XMIT回路86は、有限状態マシン506及び508を含む。マシ
ン506はリンク・アウトバウンド待ち行列からバッファ5
02または504へのデータ転送を制御し、マシン508は連鎖
解除処理を管理する。
ン506はリンク・アウトバウンド待ち行列からバッファ5
02または504へのデータ転送を制御し、マシン508は連鎖
解除処理を管理する。
マシン506及び508の動作のスケジューリングは、スケジ
ューラ510の制御下で行なわれる。
ューラ510の制御下で行なわれる。
XMIT回路86は、RCV回路86と同様に複数のユーザによっ
て共用される。またこの回路は、特定のユーザ・データ
・バーストを処理するたびに、そのユーザに対応する制
御情報の状態を知らなくてはならない。これは、バッフ
ァ512内にある制御ブロックによって行なわれる。XMIT
回路86は、データ・バーストの処理を開始するとき、バ
ッファ512から対応する制御ブロックをレジスタ514にロ
ードする。
て共用される。またこの回路は、特定のユーザ・データ
・バーストを処理するたびに、そのユーザに対応する制
御情報の状態を知らなくてはならない。これは、バッフ
ァ512内にある制御ブロックによって行なわれる。XMIT
回路86は、データ・バーストの処理を開始するとき、バ
ッファ512から対応する制御ブロックをレジスタ514にロ
ードする。
制御ブロックのバッファ512内のアドレスが、制御レジ
スタ503及び505のユーザ識別フィールドからバス513に
よって供給される。このローディングは、現在のバース
トに関連するユーザが前のユーザと異なる場合のみ、行
なわれる。次に、レジスタ514の内容が有限状態マシン5
06及び508によって使用され、データ・バースト処理時
に更新される。データ記憶メモリ10からすべてのバース
ト・データが転送されたときに、それはバッファ512に
セーブされる。したがって、他のユーザを扱いながら特
定のユーザの状態を維持し、次のバーストを処理する必
要があるときに、同じ条件で再開することができる。各
ユーザごとに、次の情報を保存しなくてはならない。
スタ503及び505のユーザ識別フィールドからバス513に
よって供給される。このローディングは、現在のバース
トに関連するユーザが前のユーザと異なる場合のみ、行
なわれる。次に、レジスタ514の内容が有限状態マシン5
06及び508によって使用され、データ・バースト処理時
に更新される。データ記憶メモリ10からすべてのバース
ト・データが転送されたときに、それはバッファ512に
セーブされる。したがって、他のユーザを扱いながら特
定のユーザの状態を維持し、次のバーストを処理する必
要があるときに、同じ条件で再開することができる。各
ユーザごとに、次の情報を保存しなくてはならない。
− 現メッセージ・データ記憶アドレス(2バイト): メモリ10から現在転送されているメッセージのアドレ
ス。このフィールドは、新しいメッセージを待ち行列か
ら外すたびにステーション・サービス88によってロード
される(これは、後で第26図を参照して説明するよう
に、対応するユーザに関する要求テーブル内の使用中ビ
ットがオフのときにのみ行なえる。) − 現データ記憶バッファ・アドレス(2バイト): データが現在そこからフリップ/フロップ・バッファ50
2、504へ転送されている転送元のバッファのアドレス。
ス。このフィールドは、新しいメッセージを待ち行列か
ら外すたびにステーション・サービス88によってロード
される(これは、後で第26図を参照して説明するよう
に、対応するユーザに関する要求テーブル内の使用中ビ
ットがオフのときにのみ行なえる。) − 現データ記憶バッファ・アドレス(2バイト): データが現在そこからフリップ/フロップ・バッファ50
2、504へ転送されている転送元のバッファのアドレス。
メッセージの初めに、このフィールドが、メッセージ・
アドレスと同じ値で初期設定される。次に、これは、現
在のバッファが空になり、メッセージ連鎖の次のバッフ
ァが次のデータ獲得のため連鎖解除されるたびに更新さ
れる。
アドレスと同じ値で初期設定される。次に、これは、現
在のバッファが空になり、メッセージ連鎖の次のバッフ
ァが次のデータ獲得のため連鎖解除されるたびに更新さ
れる。
− メッセージ・バイト・カウント(2バイト): データ記憶域に全てメッセージを記憶するのに使用され
るバイト・カウントで、メッセージ転送の始めに初期設
定される。このテーブルはMCCBから取られる。これはデ
ータ記憶域に使用されている空間を表し、発信メッセー
ジに関する有効に送信されるバイト数とは異なることに
留意されたい。たとえば、バッファ・オフセットの値
が、このカウントに含まれる。
るバイト・カウントで、メッセージ転送の始めに初期設
定される。このテーブルはMCCBから取られる。これはデ
ータ記憶域に使用されている空間を表し、発信メッセー
ジに関する有効に送信されるバイト数とは異なることに
留意されたい。たとえば、バッファ・オフセットの値
が、このカウントに含まれる。
このカウントは、新しいバッファが連鎖解除されるたび
に256ずつ減分される。これが256より小さくなると、マ
シン506が最終バッファ・フラグを設定する。つまり、
メッセージの最終バッファが転送され、それが転送すべ
き残りのバイト数を含むことを意味する。
に256ずつ減分される。これが256より小さくなると、マ
シン506が最終バッファ・フラグを設定する。つまり、
メッセージの最終バッファが転送され、それが転送すべ
き残りのバイト数を含むことを意味する。
− バッファ・バイト・カウント(1バイト): 現在のバッファで使用されるバイトの総数。メッセージ
の新しいバッファが連鎖解除されるたびにロードされ
る。
の新しいバッファが連鎖解除されるたびにロードされ
る。
− バッファ変位(1バイト): 現バッファ内の次に転送するバイトのアドレス。メッセ
ージの新しいバッファが連鎖解除されるたびに、BCCBか
ら読み取られたオフセットに、バッファ変位がロードさ
れる。次に、このバッファからデータが読み取られるた
びに、これは減分される。
ージの新しいバッファが連鎖解除されるたびに、BCCBか
ら読み取られたオフセットに、バッファ変位がロードさ
れる。次に、このバッファからデータが読み取られるた
びに、これは減分される。
− ヘッダ・サイズ(1バイト): メッセージ・アドレス0から始まる、ヘッダ・タイプの
データとして処理すべきバイト数。
データとして処理すべきバイト数。
ユーザによる初期設定時に、マイクロコードによって設
定される。
定される。
− 内部フラグ(各1ビット): 最終バッファ: メッセージ・バイト・カウントが256より小さくなった
とき、マシン506によってセットされる。
とき、マシン506によってセットされる。
新しいメッセージの処理を開始するとき、マシン506に
よってリセットされる。
よってリセットされる。
メッセージ処理中: メッセージの処理を開始するとき、マシン506によって
セットされる。
セットされる。
メッセージの最終バーストを転送するとき、マシン506
によってリセットされる。
によってリセットされる。
バッファ・ヘッダ: ユーザによる初期設定時にマイクロコードによって設定
される。
される。
メッセージ・アドレス0(メッセージの第1バッファの
アドレス0)にメッセージ・ヘッダ情報があることを指
示する。この情報は、バースト・ヘッダ制御フラグがオ
ンの状態の、第1バーストとしてアダプタに送らなくて
はならない。
アドレス0)にメッセージ・ヘッダ情報があることを指
示する。この情報は、バースト・ヘッダ制御フラグがオ
ンの状態の、第1バーストとしてアダプタに送らなくて
はならない。
通常動作モードでは、アダプタ14がバースト・リクエス
ト・フラグをセットしてフリップ/フロップ制御レジス
タ503または505のユーザ識別記号フィールドをロードし
て、データ・バーストを要求したとき、マシン506はデ
ータ記憶メモリ10からデータを取り出し、フリップ/フ
ロップ・バースト・バッファ505(または504)にそれら
を転送する。次に、マシン506は、データ・バーストを
送信するためにアダプタが必要とする全情報を、関連す
るフリップ/フロップ制御レジスタ503(または505)中
で設定し、バーストが使用可能状態にあることを示すバ
ースト要求フラグをリセットする。
ト・フラグをセットしてフリップ/フロップ制御レジス
タ503または505のユーザ識別記号フィールドをロードし
て、データ・バーストを要求したとき、マシン506はデ
ータ記憶メモリ10からデータを取り出し、フリップ/フ
ロップ・バースト・バッファ505(または504)にそれら
を転送する。次に、マシン506は、データ・バーストを
送信するためにアダプタが必要とする全情報を、関連す
るフリップ/フロップ制御レジスタ503(または505)中
で設定し、バーストが使用可能状態にあることを示すバ
ースト要求フラグをリセットする。
フリップ/フロップ制御レジスタ503(505)内の制御情
報について次に説明する。この情報は、バス507を介し
てマシン506から、またはバス300を介してアダプタから
これらのレジスタ中で設定される。
報について次に説明する。この情報は、バス507を介し
てマシン506から、またはバス300を介してアダプタから
これらのレジスタ中で設定される。
− ユーザ識別(7ビット): どのユーザのためにデータ・バーストを要求するかを指
示するため、アダプタによってロードされる。このフィ
ールドは、アドレッシング・バッファ512の場合、バス5
13に供給される。
示するため、アダプタによってロードされる。このフィ
ールドは、アドレッシング・バッファ512の場合、バス5
13に供給される。
− バースト要求: ユーザ識別フィールドで指示されたユーザのためにデー
タ・バーストを要求することを指示するため、アダプタ
によってセットされる。
タ・バーストを要求することを指示するため、アダプタ
によってセットされる。
LOQ待ち行列からフリップ/フロップ・レジスタ502また
は504にすべてのバースト・データを転送したとき、及
び関連する制御レジスタ503または505内の関連する制御
フィールドがすべて更新されたときに、マシン506によ
ってリセットされる。
は504にすべてのバースト・データを転送したとき、及
び関連する制御レジスタ503または505内の関連する制御
フィールドがすべて更新されたときに、マシン506によ
ってリセットされる。
非活動(リセット)状態に初期設定される。
− ヘッダまたはデータ標識(1ビット): データ・バースト・バッファが「ヘッダ」タイプの情報
を含むことを指示するため、マシン506によってセット
される(「ヘッダ」・バーストは、メッセージの最初で
なくてはならない)。
を含むことを指示するため、マシン506によってセット
される(「ヘッダ」・バーストは、メッセージの最初で
なくてはならない)。
− 第1バースト(1ビット): 関連バースト(ヘッダまたはデータ)が新しいメッセー
ジの第1バーストであることを知らせるため、マシン50
6によってセットされる。
ジの第1バーストであることを知らせるため、マシン50
6によってセットされる。
− 最終バースト(1ビット): 関連バーストがメッセージの最終バーストであることを
指示するため、マシン506によってセットされる。
指示するため、マシン506によってセットされる。
メッセージが単一バーストで転送できる場合は、「第1
バースト」標識と「最終バースト」標識が共にセットさ
れる。
バースト」標識と「最終バースト」標識が共にセットさ
れる。
− バースト・バイト・カウント(9ビット): 関連データ・バースト内の有意バイト数を指示するた
め、マシン506によってロードされる。
め、マシン506によってロードされる。
− メッセージ状況有効(1ビット): メッセージ状況フィールドが有効であることを指示する
ため、マシン506によってセットされる。
ため、マシン506によってセットされる。
− メッセージ状況(2バイト): メッセージの第1バーストと並列にメッセージMCCB状況
フィールドが存在する場合、マシン508によって充填さ
れる。
フィールドが存在する場合、マシン508によって充填さ
れる。
XMIT回路86は、接続アダプタに従属しており、アダプタ
がフリップ/フロップ・バースト・バッファ制御レジス
タ503(505)内でバースト要求フラグをセットしてデー
タを要求するとき、スケジューリングされる。
がフリップ/フロップ・バースト・バッファ制御レジス
タ503(505)内でバースト要求フラグをセットしてデー
タを要求するとき、スケジューリングされる。
スケジューリングの流れ図は、第23図のとおりである。
電源投入リセット時(ステップ540)に、フリップ/フ
ロップ制御レジスタ503/505中でバースト要求フラグが
共にリセット(非活動化)される。フリップ/フロップ
標識FF−INDICがフリップ・バースト・バッファ502を指
し、したがって線521が活動化され、線522が非活動化さ
れる。
ロップ制御レジスタ503/505中でバースト要求フラグが
共にリセット(非活動化)される。フリップ/フロップ
標識FF−INDICがフリップ・バースト・バッファ502を指
し、したがって線521が活動化され、線522が非活動化さ
れる。
マシン506と508が遊休状態となり、フリップ/フロップ
制御レジスタ503または504内のフリップ/フロップ・バ
ースト要求ビットがアダプタによってセットされるまで
待つ(ステップ541ないしは544)。
制御レジスタ503または504内のフリップ/フロップ・バ
ースト要求ビットがアダプタによってセットされるまで
待つ(ステップ541ないしは544)。
そうなったとき、フリップ/フロップ制御レジスタ503
または505内のユーザ識別フィールドが前のバーストの
処理の終わりにセーブされた制御ブロック・レジスタの
内容と比較されて、ユーザ番号が変更されたかどうかが
ステップ545で判定される。
または505内のユーザ識別フィールドが前のバーストの
処理の終わりにセーブされた制御ブロック・レジスタの
内容と比較されて、ユーザ番号が変更されたかどうかが
ステップ545で判定される。
変更されている場合は、新しいユーザに対応する制御ブ
ロックがバッファ512からレジスタ514にロードされる
(ステップ546)。
ロックがバッファ512からレジスタ514にロードされる
(ステップ546)。
次に、線521と520のどちらか活動化されているかに応じ
て、データ・バーストがフリップ/フロップ・レジスタ
502または504に転送される。データ転送操作について
は、後で説明する。
て、データ・バーストがフリップ/フロップ・レジスタ
502または504に転送される。データ転送操作について
は、後で説明する。
バースト転送の終わりに、レジスタ514の内容がセーブ
され(ステップ548)、バースト要求ビットがリセット
される。
され(ステップ548)、バースト要求ビットがリセット
される。
マシン506と508が遊休状態に戻り、フリップ/フロップ
・バースト要求標識が活動化されるのを待つ。
・バースト要求標識が活動化されるのを待つ。
次に、第24図を参照して、転送バースト・データ・ステ
ップ547について説明する。
ップ547について説明する。
メッセージ連鎖制御ブロックMCCBによって与えられる、
マシン506の状況及びメッセージ特性に応じて、異なる
処理段階を実行しなくてはならない。
マシン506の状況及びメッセージ特性に応じて、異なる
処理段階を実行しなくてはならない。
まず始めに、ステップ560ないしステップ563からなるメ
ッセージ開始段階と状況段階がある。ステップ559で、
マシン506が、制御ブロック・レジスタ514中のメッセー
ジ処理中ビットが0であるかどうか検査する。0である
場合、要求テーブル89内の86 XMIT BUSYビットがセッ
トされる(ステップ560)。次に、新しいメッセージのM
CCBブロックを読み取って、メッセージ・サイズと状況
が獲得される(ステップ561)。状況が、フリップ/フ
ロップ制御レジスタ503と505に書き込まれ(ステップ56
2)、BCCBブロックを読み取って、次のバッファ・アド
レス、オフセット値及び最終バイト・アドレスが獲得さ
れる。
ッセージ開始段階と状況段階がある。ステップ559で、
マシン506が、制御ブロック・レジスタ514中のメッセー
ジ処理中ビットが0であるかどうか検査する。0である
場合、要求テーブル89内の86 XMIT BUSYビットがセッ
トされる(ステップ560)。次に、新しいメッセージのM
CCBブロックを読み取って、メッセージ・サイズと状況
が獲得される(ステップ561)。状況が、フリップ/フ
ロップ制御レジスタ503と505に書き込まれ(ステップ56
2)、BCCBブロックを読み取って、次のバッファ・アド
レス、オフセット値及び最終バイト・アドレスが獲得さ
れる。
マシン506がレジスタ514内のバッファ・ヘッダ・ビット
がオンであるかどうか検査する(ステップ564)。
がオンであるかどうか検査する(ステップ564)。
処理すべきヘッダ情報がある場合は、ステップ565に入
る。4個のヘッダ・バイトがメモリ・バッファから取ら
れ、フリップ/フロップ・バッファ502または504に転送
される。
る。4個のヘッダ・バイトがメモリ・バッファから取ら
れ、フリップ/フロップ・バッファ502または504に転送
される。
次に、ヘッダ・プロセスが完了しているかどうかが検査
され(ステップ566)、ステップ565に入り、ヘッダ情報
が完全にフリップ/フロップ・バッファ502または504に
転送されるまで、処理が続行される。
され(ステップ566)、ステップ565に入り、ヘッダ情報
が完全にフリップ/フロップ・バッファ502または504に
転送されるまで、処理が続行される。
次に、現バッファ内にデータがあるかどうか検査が行な
われる(ステップ567)。データがある場合は、レジス
タ514内のメッセージ処理中ビットが1にセットされ
る。データがない場合は、マシン506は、レジスタ514内
で最終バッファ・ビットがセットされているかどうか検
査する(ステップ568)。
われる(ステップ567)。データがある場合は、レジス
タ514内のメッセージ処理中ビットが1にセットされ
る。データがない場合は、マシン506は、レジスタ514内
で最終バッファ・ビットがセットされているかどうか検
査する(ステップ568)。
最終バッファ・ビットがセットされていないか、あるい
は、現バッファにデータが存在する場合には、制御ブロ
ック・レジスタ514内でメッセージ処理中ビットがセッ
トされる(ステップ569)。
は、現バッファにデータが存在する場合には、制御ブロ
ック・レジスタ514内でメッセージ処理中ビットがセッ
トされる(ステップ569)。
最終バッファ・ビットがオンであることが判明した場
合、メッセージ処理中ビットが0にセットされる(ステ
ップ570)。
合、メッセージ処理中ビットが0にセットされる(ステ
ップ570)。
ステップ569または570の後に、フリップ/フロップ・レ
ジスタ503または505が更新される(ステップ571)。
ジスタ503または505が更新される(ステップ571)。
ステップ564で、マシン506が、バッファがデータだけで
ヘッダ情報を含まないと判定した場合は、ステップ572
に入る。4個のデータ・バイトがバッファから読み取ら
れ、フリップ/フロップ・バッファ502または504に転送
され、バッファ・バイト・カウントが増分される。
ヘッダ情報を含まないと判定した場合は、ステップ572
に入る。4個のデータ・バイトがバッファから読み取ら
れ、フリップ/フロップ・バッファ502または504に転送
され、バッファ・バイト・カウントが増分される。
4個のバイトが転送されるたびに、マシン506が、すべ
てのバッファの処理が完了したかどうか検査する(ステ
ップ574)。
てのバッファの処理が完了したかどうか検査する(ステ
ップ574)。
完了している場合には、マシン506は、処理されている
バッファがメッセージの最終バッファであるかどうかを
検査する(ステップ576)。これはBCCBから読み取ら
れ、ステップ563でセーブされた次のバッファ・アドレ
スによって指示される。
バッファがメッセージの最終バッファであるかどうかを
検査する(ステップ576)。これはBCCBから読み取ら
れ、ステップ563でセーブされた次のバッファ・アドレ
スによって指示される。
それが最終バッファである場合は、ステップ570に入っ
て、メッセージ処理中ビットが0にセットされ、要求テ
ーブル89内の86 XMIT BUSYビットをリセットする。
て、メッセージ処理中ビットが0にセットされ、要求テ
ーブル89内の86 XMIT BUSYビットをリセットする。
最終バッファでない場合は、次のバッファが連鎖解除さ
れ、(ステップ577)そのBCCBブロックが読み取られセ
ーブされる。
れ、(ステップ577)そのBCCBブロックが読み取られセ
ーブされる。
次に、マシン506は、フリップ/フロップ・データ・バ
ッファ502または504が満杯かどうか検査する(ステップ
578)。満杯の場合は、ステップ571に入り、制御レジス
タ503または505内のフリップ/フロップ・バッファ・カ
ウントが更新される。満杯ではない場合は、ステップ57
2に入り、次のバッファの内容が転送される。
ッファ502または504が満杯かどうか検査する(ステップ
578)。満杯の場合は、ステップ571に入り、制御レジス
タ503または505内のフリップ/フロップ・バッファ・カ
ウントが更新される。満杯ではない場合は、ステップ57
2に入り、次のバッファの内容が転送される。
メッセージ開始段階は、第25図に詳しく示してある。
制御ブロック・レジスタ514内のメッセージ処理中ビッ
トが0であることが判明した場合、レジスタ514内の現
メッセージ・データ記憶アドレスから算出されたメモリ
・アドレスにあるメッセージのMCCBブロックが読み取ら
れる。メッセージ・バイト・カウントと次のメッセージ
・アドレスがセーブされる(ステップ561−1)。次の
メッセージ・アドレスが、メッセージ転送時に制御ブロ
ック・レジスタに書き込まれ、バッファ512にセーブさ
れることになる(ステップ548)。
トが0であることが判明した場合、レジスタ514内の現
メッセージ・データ記憶アドレスから算出されたメモリ
・アドレスにあるメッセージのMCCBブロックが読み取ら
れる。メッセージ・バイト・カウントと次のメッセージ
・アドレスがセーブされる(ステップ561−1)。次の
メッセージ・アドレスが、メッセージ転送時に制御ブロ
ック・レジスタに書き込まれ、バッファ512にセーブさ
れることになる(ステップ548)。
メッセージ・バイト・カウントは、レジスタ514に書き
込まれる(ステップ580)。MCCB状況が読み取られ(ス
テップ561−2)ステップ562に入る。
込まれる(ステップ580)。MCCB状況が読み取られ(ス
テップ561−2)ステップ562に入る。
この状況が、フリップ/フロップ制御バッファ503また
は505に書き込まれ、状況有効ビットが1にセットされ
る。
は505に書き込まれ、状況有効ビットが1にセットされ
る。
次に、バッファ連鎖制御ブロックBCCBが読み取られセー
ブされる(ステップ563)。
ブされる(ステップ563)。
ステップ563で読み取られたバッファ・バイト・カウン
トがレジスタ514のバッファ・バイト・カウント・フィ
ールドに書き込まれ、バッファ・オフセットがバッファ
変位フィールドに書き込まれる。これは、バッファから
読み取られるバッファのアドレッシングを制御すること
を目的とする(ステップ581)。次に、フリップ/フロ
ップ制御レジスタ503、505内の第1バースト・ビットが
1にセットされ(ステップ582)、ステップ564に入る。
トがレジスタ514のバッファ・バイト・カウント・フィ
ールドに書き込まれ、バッファ・オフセットがバッファ
変位フィールドに書き込まれる。これは、バッファから
読み取られるバッファのアドレッシングを制御すること
を目的とする(ステップ581)。次に、フリップ/フロ
ップ制御レジスタ503、505内の第1バースト・ビットが
1にセットされ(ステップ582)、ステップ564に入る。
次に、第23図及び第24図に示すように、ヘッダまたはデ
ータが転送される。
ータが転送される。
本発明によれば、特定の発信元ユーザ12から受け取った
メッセージが連鎖され、ユーザ・リンク・インバウンド
待ち行列に入れられる。
メッセージが連鎖され、ユーザ・リンク・インバウンド
待ち行列に入れられる。
次に、ステーション・サービスRCJがメッセージを待ち
行列から外し、メッセージ処理にマイクロコード操作が
必要でないときは、MCCB状況、フィールド・パラメータ
に応じて、各メッセージの内容により、メッセージが送
信宛先ユーザに対応する宛先リンク・アウトバウンド待
ち行列に入れられる。その場合、メッセージ連鎖制御ブ
ロック内の「ハードワイヤ式経路指定」ビットがユーザ
・リンク・アウトバウンド待ち行列のQCN−id識別と共
に活動状態となっていることが判明する。
行列から外し、メッセージ処理にマイクロコード操作が
必要でないときは、MCCB状況、フィールド・パラメータ
に応じて、各メッセージの内容により、メッセージが送
信宛先ユーザに対応する宛先リンク・アウトバウンド待
ち行列に入れられる。その場合、メッセージ連鎖制御ブ
ロック内の「ハードワイヤ式経路指定」ビットがユーザ
・リンク・アウトバウンド待ち行列のQCN−id識別と共
に活動状態となっていることが判明する。
メッセージ処理にマイクロコード操作が必要なときは、
メッセージは発信元ユーザのマイクロコード・インバウ
ンド待ち行列に入れられる。マイクロプロセッサは、DE
QUEUEグローバル命令を発行して、メッセージを獲得
し、それらを処理し、ENQUEUEグローバル命令を発行し
て、それらを宛先ユーザに転送すべく宛先リンク・アウ
トバウンド待ち行列に入れる。
メッセージは発信元ユーザのマイクロコード・インバウ
ンド待ち行列に入れられる。マイクロプロセッサは、DE
QUEUEグローバル命令を発行して、メッセージを獲得
し、それらを処理し、ENQUEUEグローバル命令を発行し
て、それらを宛先ユーザに転送すべく宛先リンク・アウ
トバウンド待ち行列に入れる。
第26図は、ステーション・サービス88を示す。これは、
各インターフェース22内に配置され、一度に1人のユー
ザを処理して、受信、送信またはメッセージ伝送終了処
理を行なう。
各インターフェース22内に配置され、一度に1人のユー
ザを処理して、受信、送信またはメッセージ伝送終了処
理を行なう。
ステーション・サービス88は、受信論理要素(RCV)60
0、送信論理要素(XMIT)602及びメッセージ終了要素
(EOM)604の3つの要素で構成されている。これらの要
素は、受信、送信、及びメッセージ伝送終了処理専用で
ある。
0、送信論理要素(XMIT)602及びメッセージ終了要素
(EOM)604の3つの要素で構成されている。これらの要
素は、受信、送信、及びメッセージ伝送終了処理専用で
ある。
これらの要素のそれぞれは、多重化回路80とバス24を介
してグローバル命令マシンにグローバル命令を発行す
る。
してグローバル命令マシンにグローバル命令を発行す
る。
受信要素600は、バス606を介して、DEQUEUEグローバル
命令とENQUEUEグローバル命令を発行する。
命令とENQUEUEグローバル命令を発行する。
送信要素602は、バス608を介して、DEQUEUEグローバル
命令を発行する。また、バス610を介して、メッセージ
準備完了情報を発行する。この情報は、レジスタ652に
記憶された後、特定の宛先ユーザ向けのメッセージが送
受信可能状態にあることを知らせるため、アダプタ14に
供給される。
命令を発行する。また、バス610を介して、メッセージ
準備完了情報を発行する。この情報は、レジスタ652に
記憶された後、特定の宛先ユーザ向けのメッセージが送
受信可能状態にあることを知らせるため、アダプタ14に
供給される。
アダプタは、レジスタ652内のメッセージ準備完了情報
に応答して、線614上にデータ移動送信回路(XMIT)86
に対するバースト要求を生成する。
に応答して、線614上にデータ移動送信回路(XMIT)86
に対するバースト要求を生成する。
メッセージ送信終了要素604は、バス616上にRELEASEグ
ローバル命令を発行して、メッセージ送信の終わりに、
メッセージ・バッファを解放して空きバッファ待ち行列
に入れる。
ローバル命令を発行して、メッセージ送信の終わりに、
メッセージ・バッファを解放して空きバッファ待ち行列
に入れる。
要求テーブル89は、各ユーザごとに1個の項目を含み、
各ユーザに対する、受信、送信またはEOM要素を活動化
させる状況ビットを含む。
各ユーザに対する、受信、送信またはEOM要素を活動化
させる状況ビットを含む。
各ユーザごとに、線620を活動化することによりRCV回路
86から要求されたENQUEUEグローバル命令リターン・コ
ードによって受信状況ビットがセットされる(第10B図
ステップ126)。このビットは、ユーザリンク・インバ
ウンド待ち行列が空でないことを指示する。これは、回
線622を活動化することにより、待ち行列が空になった
とき待ち行列解除グローバル命令リターン・コードによ
ってリセットされる。
86から要求されたENQUEUEグローバル命令リターン・コ
ードによって受信状況ビットがセットされる(第10B図
ステップ126)。このビットは、ユーザリンク・インバ
ウンド待ち行列が空でないことを指示する。これは、回
線622を活動化することにより、待ち行列が空になった
とき待ち行列解除グローバル命令リターン・コードによ
ってリセットされる。
各ユーザごとに、「LOQが空ではない」ビットと「86 X
MIT使用中」ビットの送信状況ビットがある。
MIT使用中」ビットの送信状況ビットがある。
「LOQが空ではない」ビットは、第1メッセージがユー
ザ・リンク・アウトバウンド待ち行列に入れられたとき
に、線624を活動化することにより、ENQUEUEグローバル
命令リターン・コードからセットされ、ユーザ・リンク
・アウトバウンド待ち行列が空になったとき、線626を
活動化することにより、DEQUEUEグローバル命令リター
ン・コードからリセットされる。
ザ・リンク・アウトバウンド待ち行列に入れられたとき
に、線624を活動化することにより、ENQUEUEグローバル
命令リターン・コードからセットされ、ユーザ・リンク
・アウトバウンド待ち行列が空になったとき、線626を
活動化することにより、DEQUEUEグローバル命令リター
ン・コードからリセットされる。
86 XMIT使用中ビットは、バースト要求がアダプタ14に
よって発行されたとき、XMIT回路86によってセットさ
れ、前述のように線628を介して最終バーストがアダプ
タに送られるとき、XMIT回路86によってリセットされ
る。
よって発行されたとき、XMIT回路86によってセットさ
れ、前述のように線628を介して最終バーストがアダプ
タに送られるとき、XMIT回路86によってリセットされ
る。
復合回路619はグローバル命令応答を受け取り、線620、
622、624及び626のうち該当する線を活動化させる。
622、624及び626のうち該当する線を活動化させる。
各ユーザごとに、バス300の線632を活動化させることに
よって、メッセージ送信終了ビットがアダプタ14により
活動化され、状況OKビットが像633を介してメッセージ
を首尾よく受け取ったときに、アダプタによってセット
される。
よって、メッセージ送信終了ビットがアダプタ14により
活動化され、状況OKビットが像633を介してメッセージ
を首尾よく受け取ったときに、アダプタによってセット
される。
スケジューラ634は、要求テーブル80を走査し、各ユー
ザごとに状況ビットを検査して、ステーション・サービ
スを、メッセージ受信(リンク・インバウンド待ち行列
が空ではないビットがオンであり、XMIT使用中ビットが
オフ)、またはメッセージ送信(LOQが空でないビット
がオン)、またはメッセージ終了処理(EOMビットと状
況OKビットがオン)のいずれにスケジューリングすべき
かを決定する。
ザごとに状況ビットを検査して、ステーション・サービ
スを、メッセージ受信(リンク・インバウンド待ち行列
が空ではないビットがオンであり、XMIT使用中ビットが
オフ)、またはメッセージ送信(LOQが空でないビット
がオン)、またはメッセージ終了処理(EOMビットと状
況OKビットがオン)のいずれにスケジューリングすべき
かを決定する。
メモリ10の線形空間内のステーション制御ブロック(SC
B)が各ユーザに割り当てられ、ユーザのインバウンド
待ち行列とリンク・アウトバウンド待ち行列のQCB−id
を含む。
B)が各ユーザに割り当てられ、ユーザのインバウンド
待ち行列とリンク・アウトバウンド待ち行列のQCB−id
を含む。
線642、644及び646は、要求テーブルから読み取った、
リンク・インバウンド待ち行列が空でないビット、LOQ
が空でないビット、及びEOMビットよって活動化され
る。
リンク・インバウンド待ち行列が空でないビット、LOQ
が空でないビット、及びEOMビットよって活動化され
る。
スケジューラ634は、要求テーブルを走査する。スケジ
ューラ634は、各ユーザごとに、受信、送信、EOMの順に
状況ビットを読み取って、受信要素を活動化するか、送
信要素を活動化するか、あるいはEOM要素を活動化する
か、を判定する。そうである場合、スケジューラ634
は、その線642、644、及び646のいずれか1本を活動化
する。
ューラ634は、各ユーザごとに、受信、送信、EOMの順に
状況ビットを読み取って、受信要素を活動化するか、送
信要素を活動化するか、あるいはEOM要素を活動化する
か、を判定する。そうである場合、スケジューラ634
は、その線642、644、及び646のいずれか1本を活動化
する。
これにより、SCBフィーダ636が、対応するSCBブロック
のアドレスを生成する。このアドレスは、バス638と多
重化回路80を介してメモリ・コントローラ11に送られ
る。また、メモリから読み取られたSCBブロック・デー
タが、レジスタ640に記憶され、線642、644または646が
活動化されるまで待ってから、バス641を介して、受信
要素600、送信要素602またはメッセージ終了要素604に
供給される。
のアドレスを生成する。このアドレスは、バス638と多
重化回路80を介してメモリ・コントローラ11に送られ
る。また、メモリから読み取られたSCBブロック・デー
タが、レジスタ640に記憶され、線642、644または646が
活動化されるまで待ってから、バス641を介して、受信
要素600、送信要素602またはメッセージ終了要素604に
供給される。
その動作は、次のとおりである。
RCV要素600は、活動化されると、DEQUEUEグローバル命
令を発行する。要求データは、前述のようにレジスタ64
0に記憶されているリンク・インバウンド待ち行列のQCB
−idであり、応答データは、リンク・インバウンド待ち
行列制御ブロックの頭部フィールドから読み取られるメ
ッセージ・アドレスである。
令を発行する。要求データは、前述のようにレジスタ64
0に記憶されているリンク・インバウンド待ち行列のQCB
−idであり、応答データは、リンク・インバウンド待ち
行列制御ブロックの頭部フィールドから読み取られるメ
ッセージ・アドレスである。
次に、回路600がENQUEUE要求を送信する。要求データ
は、MCCBの内容に応じて、メッセージ・アドレス、マイ
クロコード・インバウンド待ち行列QCB−id、またはリ
ンク・アウトバウンド待ち行列QCB−idのいずれかとな
る。回路600は、スケジューラ634に制御を戻す。
は、MCCBの内容に応じて、メッセージ・アドレス、マイ
クロコード・インバウンド待ち行列QCB−id、またはリ
ンク・アウトバウンド待ち行列QCB−idのいずれかとな
る。回路600は、スケジューラ634に制御を戻す。
メッセージがマイクロコード・インバウンド待ち行列に
入っている場合は、待ち行列から外されて、マイクロコ
ードよって処理され、宛先ユーザのリンク・アウトバウ
ンド待ち行列に入れられることになる。
入っている場合は、待ち行列から外されて、マイクロコ
ードよって処理され、宛先ユーザのリンク・アウトバウ
ンド待ち行列に入れられることになる。
XMIT要素602は、活動化されると、DEQUEUEグローバル命
令を送信する。これは、バス608を介して送信される。
要求データは、レジスタ640に記憶されているリンク・
アウトバウンド待ち行列のQCB−idである。
令を送信する。これは、バス608を介して送信される。
要求データは、レジスタ640に記憶されているリンク・
アウトバウンド待ち行列のQCB−idである。
応答データ・フィールド中で受け取ったメッセージ・ア
ドレスは、バス650を介して送信され、XMIT回路86の制
御ブロック・バッファ512の、メッセージの送信に使用
するユーザ・アドレスに記憶され、SCBブロックにセー
ブされる。
ドレスは、バス650を介して送信され、XMIT回路86の制
御ブロック・バッファ512の、メッセージの送信に使用
するユーザ・アドレスに記憶され、SCBブロックにセー
ブされる。
また、レジスタ652に、そのユーザ向けのメッセージが
使用可能状態にあることを示す信号がロードされる。送
信要素602は、スケジューラ634に制御を戻す。アダプタ
は、バースト要求をそこから開始する。
使用可能状態にあることを示す信号がロードされる。送
信要素602は、スケジューラ634に制御を戻す。アダプタ
は、バースト要求をそこから開始する。
EOM要素604は、活動化されると、RELEASEグローバル命
令を送信する。要求データは、以前にSCBブロックにセ
ーブされたメッセージ・アドレスである。したがって、
メッセージが首尾良く受信されたとき、メッセージ・バ
ッファが解放されて空バッファ待ち行列に入る。EOM要
素604はスケジューラ634に制御を戻し、次のユーザが走
査される。
令を送信する。要求データは、以前にSCBブロックにセ
ーブされたメッセージ・アドレスである。したがって、
メッセージが首尾良く受信されたとき、メッセージ・バ
ッファが解放されて空バッファ待ち行列に入る。EOM要
素604はスケジューラ634に制御を戻し、次のユーザが走
査される。
E.発明の効果 以上説明したように本発明によれば、高価な中央制御装
置を必要とせずに任意の種類のアダプタ間でメッセージ
を交換することができる。
置を必要とせずに任意の種類のアダプタ間でメッセージ
を交換することができる。
第1図は、本発明を取り入れた通信システムの一般的な
配置図である。 第2図は、メモリの構成を示す図である。 第3図は、アドレッシング・フォーマットによるメモリ
・ページの配置図である。 第4図は、データ・バッファの連鎖を示す図である。 第5図は、バッファ制御ブロック・フィールドを示す図
である。 第6図は、メッセージの連鎖を示す図である。 第7図は、待ち行列制御ブロック・フィールドを示す図
である。 第8図は、本発明を取り入れた通信システムの配置の詳
細図である。 第9図は、グローバル命令マシン90とグローバル命令要
求/応答フォーマットの図である。 第10A図及び第10B図は、グローバル命令マシンの論理回
路102と104が、待ち行列グローバル命令を処理するため
に実行する諸機能を示す図である。 第11A図と第11B図は、論理回路102と104が待ち行列解除
大域指令を処理するために実行する諸機能を示す図であ
る。 第12A図と第12B図は、論理回路102と104が待ち行列解除
フリーグローバル命令を処理するために実行する諸機能
を示す図である。 第13A図ないし第13C図は、論理回路102と104が解放グロ
ーバル命令を処理するために実行する諸機能を示す図で
ある。 第14図は、空きバッファ供給マシン90を示す図である。 第15A図と第15B図は、論理回路206が空きバッファ・プ
ール200をロードするために実行する諸機能を示す図で
ある。 第16図は、制御論理回路202が解放グローバル命令を処
理するために実行する諸機能を示す図である。 第17図は、受信データ移動回路86 RCVを示す図であ
る。 第18図は、論理回路306と308がデータ・バーストを受信
するために実行する諸機能を示す図である。 第19A図と第19B図は、第18図のステップ334で実行され
る諸機能の詳細図である。 第20図は、第19図のステップ352、353及び354で実行さ
れる諸機能の詳細図である。 第21図は、第19図のステップ357ないしは364で実行され
る諸機能の詳細図である。 第22図は、送信データ移動回路86 XMITを示す図であ
る。 第23図は、論理回路506と508が宛先ユーザにデータ・バ
ーストを送信するために実行する諸機能を示す図であ
る。 第24図は、第23図のステップ347で実行される諸機能を
示す図である。 第25図は、560ないし564ステップで実行される諸機能を
示す図である。 第26図は、ステーション・サービス回路88を示す図であ
る。
配置図である。 第2図は、メモリの構成を示す図である。 第3図は、アドレッシング・フォーマットによるメモリ
・ページの配置図である。 第4図は、データ・バッファの連鎖を示す図である。 第5図は、バッファ制御ブロック・フィールドを示す図
である。 第6図は、メッセージの連鎖を示す図である。 第7図は、待ち行列制御ブロック・フィールドを示す図
である。 第8図は、本発明を取り入れた通信システムの配置の詳
細図である。 第9図は、グローバル命令マシン90とグローバル命令要
求/応答フォーマットの図である。 第10A図及び第10B図は、グローバル命令マシンの論理回
路102と104が、待ち行列グローバル命令を処理するため
に実行する諸機能を示す図である。 第11A図と第11B図は、論理回路102と104が待ち行列解除
大域指令を処理するために実行する諸機能を示す図であ
る。 第12A図と第12B図は、論理回路102と104が待ち行列解除
フリーグローバル命令を処理するために実行する諸機能
を示す図である。 第13A図ないし第13C図は、論理回路102と104が解放グロ
ーバル命令を処理するために実行する諸機能を示す図で
ある。 第14図は、空きバッファ供給マシン90を示す図である。 第15A図と第15B図は、論理回路206が空きバッファ・プ
ール200をロードするために実行する諸機能を示す図で
ある。 第16図は、制御論理回路202が解放グローバル命令を処
理するために実行する諸機能を示す図である。 第17図は、受信データ移動回路86 RCVを示す図であ
る。 第18図は、論理回路306と308がデータ・バーストを受信
するために実行する諸機能を示す図である。 第19A図と第19B図は、第18図のステップ334で実行され
る諸機能の詳細図である。 第20図は、第19図のステップ352、353及び354で実行さ
れる諸機能の詳細図である。 第21図は、第19図のステップ357ないしは364で実行され
る諸機能の詳細図である。 第22図は、送信データ移動回路86 XMITを示す図であ
る。 第23図は、論理回路506と508が宛先ユーザにデータ・バ
ーストを送信するために実行する諸機能を示す図であ
る。 第24図は、第23図のステップ347で実行される諸機能を
示す図である。 第25図は、560ないし564ステップで実行される諸機能を
示す図である。 第26図は、ステーション・サービス回路88を示す図であ
る。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジヤン・マルク・ミレー フランス国06140ヴアンス、ル・ヴアンシ アンヌ2デイー番地 (72)発明者 ジヤン・マリー・ミユニエ フランス国06800カーニユ・シユール・メ ール、シユマン・デ・コレ11番地 (72)発明者 ベルナール・ノダン フランス国06610ラ・ゴード、ル・ド・ ラ・ピエール5番地 (56)参考文献 特開 昭53−84658(JP,A) 特開 昭54−78631(JP,A)
Claims (1)
- 【請求項1】複数のユーザによって共用され共通バスを
介してアクセスされるメモリを介して、通信システムに
おいて発信元ユーザと宛先ユーザとの間でメッセージの
転送を行なうための機構であって、 (a)容量の等しい複数のデータ・バッファおよび各々発
信元ユーザまたは宛先ユーザにそれぞれ固定的に割り当
てられる複数の待ち行列制御ブロックを上記メモリ内に
画定し、 (b)データ・バッファと1対1に対応するバッファ制御
ブロックを上記メモリ内に画定し、該バッファ制御ブロ
ックに1メッセージを貯蔵するデータ・バッファ連鎖の
次バッファのアドレスに関する情報、および次メッセー
ジの第1バッファのアドレスに関する情報を記憶させ、 (c)発信元ユーザからのメッセージを受け取ってこれを
上記メモリから取得された空のデータ・バッファに記憶
することによって当該ユーザのインバウンド・メッセー
ジ待ち行列を作成し、該取得されたバッファのバッファ
制御ブロックに次のバッファ・アドレスを表す情報およ
び次メッセージの第1バッファのアドレスに関する情報
を書き込み、さらに当該ユーザの待ち行列内の第1メッ
セージの第1バッファのアドレスを表す待ち行列頭部情
報及び当該ユーザの待ち行列内の最後のメッセージの第
1バッファのアドレスを表す待ち行列末尾情報を対応す
る発信元ユーザに割り当てられた待ち行列制御ブロック
に書き込むことによって、上記データ・バッファを連鎖
させ、 (d)発信元ユーザの待ち行列制御ブロックを読み取って
該待ち行列制御ブロックから読み取られたバッファのア
ドレス情報を用いて宛先ユーザの待ち行列制御ブロック
のバッファのアドレス情報を変更し、 (e)上記宛先ユーザの待ち行列制御ブロックにより指定
されるバッファからメッセージを読み出すことにより上
記メッセージを上記宛先ユーザに転送する、 ことを特徴とするメッセージ転送機構。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| EP88480067A EP0365731B1 (en) | 1988-10-28 | 1988-10-28 | Method and apparatus for transferring messages between source and destination users through a shared memory |
| EP88480067.3 | 1988-10-28 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH02158858A JPH02158858A (ja) | 1990-06-19 |
| JPH0675262B2 true 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) |
Families Citing this family (54)
| 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 |
| US5666485A (en) * | 1995-06-07 | 1997-09-09 | Samsung Electronics Inc. | Software driver for a system bus |
| 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 |
| 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 |
| WO1998040850A2 (en) * | 1997-03-13 | 1998-09-17 | Whitney Mark M | A system for, and method of, off-loading network transactions from a mainframe to an intelligent input/output device, including off-loading message queuing facilities |
| 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 |
| US6314501B1 (en) * | 1998-07-23 | 2001-11-06 | Unisys Corporation | Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory |
| US6526451B2 (en) * | 1998-09-30 | 2003-02-25 | Stmicroelectronics, Inc. | Method and network device for creating circular queue structures in shared memory |
| 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 |
| 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 | 北京同步科技有限公司 | 一种实现多进程共享端口接收网络通知的系统及其方法 |
| JP4930554B2 (ja) * | 2009-07-07 | 2012-05-16 | 株式会社日立製作所 | 入出力制御装置 |
| 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 | 中国人民解放军国防科技大学 | 一种用于片内报文处理的弹性共享缓存器 |
Family Cites Families (17)
| 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 |
| JPS5384658A (en) * | 1976-12-30 | 1978-07-26 | Fujitsu Ltd | Processing system for inter-processor communication |
| JPS547252A (en) * | 1977-06-20 | 1979-01-19 | Hitachi Ltd | Program control system |
| JPS596410B2 (ja) * | 1977-12-05 | 1984-02-10 | 富士通株式会社 | バツフア領域制御処理方法 |
| 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 |
-
1988
- 1988-10-28 EP EP88480067A patent/EP0365731B1/en not_active Expired - Lifetime
- 1988-10-28 DE DE3850881T patent/DE3850881T2/de not_active Expired - Fee Related
-
1989
- 1989-08-02 CA CA000607308A patent/CA1320590C/en not_active Expired - Fee Related
- 1989-10-20 JP JP1271895A patent/JPH0675262B2/ja not_active Expired - Lifetime
-
1992
- 1992-10-23 US US07/965,554 patent/US5333269A/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| EP0365731B1 (en) | 1994-07-27 |
| JPH02158858A (ja) | 1990-06-19 |
| DE3850881T2 (de) | 1995-03-09 |
| DE3850881D1 (de) | 1994-09-01 |
| CA1320590C (en) | 1993-07-20 |
| EP0365731A1 (en) | 1990-05-02 |
| US5333269A (en) | 1994-07-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0675262B2 (ja) | メツセージ転送機構 | |
| US7111092B1 (en) | Buffer management technique for a hypertransport data path protocol | |
| US6912604B1 (en) | Host channel adapter having partitioned link layer services for an infiniband server system | |
| US5940612A (en) | System and method for queuing of tasks in a multiprocessing system | |
| US5257374A (en) | Bus flow control mechanism | |
| US5805827A (en) | Distributed signal processing for data channels maintaining channel bandwidth | |
| US6925512B2 (en) | Communication between two embedded processors | |
| EP0674276B1 (en) | A computer system | |
| US5513368A (en) | Computer I/O adapters for programmably varying states of peripheral devices without interfering with central processor operations | |
| KR960015862B1 (ko) | 데이타 송신방법 및 장치 | |
| US7117308B1 (en) | Hypertransport data path protocol | |
| JPH03130863A (ja) | 制御要素転送システム | |
| KR910017798A (ko) | 동기 링크 인터페이스 및 비동기 호스트 프로세서 인터페이스를 갖는 종합 데이터 링크 제어기 | |
| EP0249116B1 (en) | Method for controlling data transfer buffer | |
| WO2003055157A1 (en) | Deferred queuing in a buffered switch | |
| EP0374338A1 (en) | Shared intelligent memory for the interconnection of distributed micro processors | |
| US6816889B1 (en) | Assignment of dual port memory banks for a CPU and a host channel adapter in an InfiniBand computing node | |
| JPH065524B2 (ja) | 記憶装置管理方法 | |
| EP0317468A2 (en) | Bus flow control system | |
| US5572697A (en) | Apparatus for recovering lost buffer contents in a data processing system | |
| US5341475A (en) | Method for exchanging messages between a shared memory and communication adapters using an efficient logical protocol | |
| JP2002521942A (ja) | メモリ装置およびメモリ装置の作動方法 | |
| KR20010095103A (ko) | 데이터 블록 전송 방법 및 장치 | |
| JP3799741B2 (ja) | バスコントローラ | |
| JPH10143486A (ja) | 並列計算機におけるデータ送受信方法 |