JPS63168732A - ノン・ロツキング待ち行列機構 - Google Patents

ノン・ロツキング待ち行列機構

Info

Publication number
JPS63168732A
JPS63168732A JP62285650A JP28565087A JPS63168732A JP S63168732 A JPS63168732 A JP S63168732A JP 62285650 A JP62285650 A JP 62285650A JP 28565087 A JP28565087 A JP 28565087A JP S63168732 A JPS63168732 A JP S63168732A
Authority
JP
Japan
Prior art keywords
queue
bus
register
queuing
pointer
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.)
Pending
Application number
JP62285650A
Other languages
English (en)
Inventor
デデイル・フランシス・ジロー
アルヴイン・ポール・マレイ
アンドレ・パポウト
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPS63168732A publication Critical patent/JPS63168732A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • G06F5/12Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/12Indexing scheme relating to groups G06F5/12 - G06F5/14
    • G06F2205/123Contention resolution, i.e. resolving conflicts between simultaneous read and write operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)
  • Multi Processors (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

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

Description

【発明の詳細な説明】 以下の順序で本発明を説明する。
A、産業上の利用分野 B、従来技術 C8発明が解決しようとする問題点 り0問題点を解決するための手段 E、実施例 F0作用 Fl、A−B待ち行列へ情報を入れる処理F2.A−B
待ち行列から情報を出す処理G、他の実施例 H1発明の効果 A、産業上の利用分野 この発明は、ディジタル通信システムに関し、特に、受
信装置を送信装置から減結合(decouple)する
ことを可能ならしめる待ち行列機構に関するものである
B、従来技術 ]ンピュータ設備(きわめて簡単なユニットから複雑な
処理システムに及ぶ)の独立のハードウェア構成要素間
のほとんどの通信は、送信及び受信ハードウェア構成要
素が同期されていることを保証する複雑なプロトコルに
より行なわれる。チャネルは、そのような通信手段の例
である。同期化が必要であるということは、受信構成要
素が実行中の作業を中断しなくてはならないことを意味
し、多くの場合、それにはその作業の状況をセーブし復
元するという大きいコストを伴う。
よりすぐれた代替技術として、ある形式の待ち行列機構
を設け、受信器を送信器から減結合することを可能なら
しめるものがある。待ち行列により、受信ハードウェア
がその通常動作を継続している間に送信器がデータを受
信器の待ち行列に送る(enqueue)ことができる
訳である。そして自分の都合のよいときに、受信ハード
ウェアは送信データを実際に受は取る(dequeue
)ことができる。ところが、送信ハードウェア構成要素
と受信ハードウェア構成要素は互いに独立なエンティテ
ィであって並列的に動作する能力をもち、また待ち行列
は実質的に共有された資源であるから、待ち行列へのデ
ータの出し入れの間に送信器と受信器が互いに干渉する
のを防止するためには通常ロックが必要である。しかし
、これにより動作の並列性のレベル及び性能が低下して
しまうとともに、複雑度と、交換すべき情報の量が増大
する。
一般的には1例えばユニットAとユニットBの間のロッ
クは1次のようにして実施される。
(1)もしA及びBがプロセッサであるなら、待ち行列
のデータの出し入れの間に待ち行列を占有するために、
テスト及びセット、または比較及びスワップ命令(また
は他の種類の任意のハードウェアあるいはセマフォのソ
フトウェア的実施)によって明示的に行なわれる。
(2)もしA及びBが、受は取られた待ち行列データ出
入れコマンドを実行することをその機能とする″待ち行
列操作ハードウェア″であるなら暗示的に行なわれる。
この機構は、一度に1つのコマンドしか実行できないの
で、直列動作が実行される。次にロックはこの形式の直
列動作によって暗示的に実施される。
米国特許第4507760号は、ロックを明示的に実施
するようにしたFIFOメモリ構成を示す。これにおい
ては、FIFO待ち行列への情報書き込み、及びFIF
O待ち行列からの情報読み出しの両方が要求されたとき
、制御回路が書き込み動作に優先権を与え、これにより
最終的には待ち行列と受信装置の間の通信がロックされ
る。
C1発明が解決しようとする問題点 本発明の目的は、ロッキングの不要な待ち行列機構を提
供することにある。
D6問題点を解決するための手段 本発明によれば、待ち行列のデータの出し入れの間のみ
ならず必要に応じたステータス信号の発生及び伝播にお
いても独立なハードウェア・エンティティ(送信器と受
信器)の間に干渉がない特殊な待ち行列データ出入れ機
構が開示される。従って、この機構では、インターロッ
キング(明示的であれ暗示的であれ)は要求されない。
本発明は、N個(Nは整数)の作業要素(WE)を記憶
するための、ランダム・アクセス・メモリでよい記憶装
置に関与する。このメモリの制御には、2つのポインタ
・レジスタE及びDを使用する。Dポインタは、待ち行
列から取出された最後のWEを指定する。Eポインタは
、待ち行列に入れられた最後のWEを指定する。
そうして、待ち行列に入れるために情報が記憶に入力さ
れるべきときは、待ち行列が満杯かどうかをチェックす
るため判断が行なわれる。もし満杯でないなら、WEが
アドレスINCR(E)で記憶に入れられ、Eポインタ
がインクリメントされる。このとき、INCRは、論理
的には、Eによって指定される位置の次の位置を指定す
る。
WEが待ち行列から読み出されるべきときは、待ち行列
が空でないことを保証するために判断が行なわれる。こ
の場合、記憶中のアドレスINCR(D)からWEが取
り出され、Dポインタがインクリメントされる。
待ち行列の操作は、2つの独立な機構により実行され、
その第1の機構は待ち行列入力を担当し、その第2の機
構は待ち行列出力を担当する。その第1のユニットは、
アドレスA (E) 、 A (D)において記憶中で
、読み取り動作を行い、アドレスINCR(E)及びA
 (E)において書込み動作を行う(A (E)及びA
 (D)は、記憶中のポインタE及びDのアドレスをあ
られす)。第2のユニットは、アドレスA (E) 、
 A (D)及びIN C,R(D )において記憶中
で読み取り動作を行い、アドレスA (D)で書き込み
動作を行う。
これらの位置にアクセスする方法は、待ち行列出入れ動
作量の干渉が不可能であり、且つ各通信エンティティが
他のエンティティとは独立にアーセスし得るような様式
である。
E、実施例 第1図の参照すると、待ち行列機構の一般的原理が示さ
れている。待ち行列120は、先頭から尾部へ循環(w
rap−around)する接続された位置の有限の集
合として定義される。作業要素(WE)のサイズは、そ
の経路に転送すべき情報の量に依存する。待ち行列は、
物理的に連続する位置を形成するか、または待ち行列の
次の位置のアドレスを示すために各位置にポインタを使
用することによって実施することができる。待ち行列に
割当てられる位置の実際の数は、待ち行列の満杯に達す
ることを回避するために、期待される最大の利用数に依
存して設定することができ、あるいはモニタ機構により
必要条件を変化させることに応じて変更することができ
る。そのような位置は記憶の1からNバイト、または1
からNレジスタヘマップすることができる。
各々の構成要素である、送信構成要素100及び受信構
成要素200は、待ち行列入れ(送信構成要素)及び待
ち行列出しく受信構成要素)機能によって待ち行列12
0を操作する。
この待ち行列は、N個(Nは整数)の作業要素WEを記
憶する容量をもつメモリの使用に基づく。
このとき、メモリを管理するために2個のポインタが定
義される。すなわち、待ち行列から出される最後のWE
を指示するDポインタと、待ち行列に入れられた最後の
WEを指定するEポインタである。
これらのポインタは、実際の待ち行列データを含む部分
である、待ち行列の″活動性″部を定義する。尚、これ
らのポインタは、ノン・ロッキング・アルゴリズムが働
くことができるように厳密に上述の規則に従わなくては
ならない。正常状態の待ち行列機構は一般的に、待ち行
列に出し入れすべき現在の作業要素を記述するこれらの
ポインタを有する。
第2図(a)、(b)、(c)は、待ち行列120の可
能な3つの状態を示す。
第2図(a)は、通常状態における待ち行列を示す。こ
のとき、待ち行列中には余地がある。
第2図(b)は、゛満杯″状態の待ち行列を示す。この
とき、要求された″待ち行列″コマンドは拒絶されるべ
きである。
第2図(c)は、″空″状態の待ち行列を示す。
これらの異なる状態は次の基準によって判別することが
できる。すなわち、 E=Dのとき、待ち行列は空状態である。
INCR(E)=Dのとき、待ち行列は“満杯″である
。このときI NCR(E) =E+ 1(modN)
上述のどの条件にも該当しないとき、待ち行列は゛′通
通常状状態あり、言わば、WEを待ち行列から出すこと
ができ、あるいはWEを待ち行列に入れることができる
INCR演算子は次のアルゴリズムに従う。すなわち、
INCRは、待ち行列位置のアドレスをもつポインタ値
によってトリガされる。その演算が完了すると、待ち行
列の、論理的に次の位置のアドレスでポインタが更新さ
れる。
位置のリンクされた集合の場合、リンク・ポインタが戻
される。
物理的に連続する位置の集合の場合、循環する場合を除
き連続する位置が戻される。この場合、待ち行列中の最
初の位置のアドレスが戻される。
第3図を参照すると、待ち行列からWEを出す動作を処
理するための関連するステップを記述するフローチャー
トが示されている。
ステップ301は、待ち行列が空か否かを判断するため
に受信構成要素110によって実行される。待ち行列が
空である場合、待ち行列出し動作が拒絶され、受信器に
待ち行列の状態を警告するためにフラグQE (待ち行
列が空のときオン)がオンにセットされる(ステップ3
02)。もし待ち行列が空でないなら、作業要素WEが
受信器に返され、ポインタDが、INCR演算子により
更新される(ステップ303)。次に、ステップ304
で、待ち行列出し処理の前に待ち行列が満杯であったか
否かを判断するために、QF(待ち行列満杯)フラグが
チェックされる。QFがオンの場合、そのフラグはリセ
ットされる(ステップ305)。QF及びQEは、報知
機能を与えるために使用され、それゆえ空/満杯状態が
検出されたときに、受信/送信構成要素が待ち行列の出
し/入れを保留することを可能ならしめる。
第4図を参照すると、待ち行列にWEを入れる処理に関
連するステップを記述するフローチャートが示されてい
る。ステップ401は、待ち行列が満杯状態か否かを判
断するために送信器100によって実行される。待ち行
列が満杯である場合、待ち行列へWEを入れる処理が拒
絶され、送信器に待ち行列のその状況を警告するために
フラグQF(待ち行列満杯)がセットされる(ステップ
403)。もし待ち行列が満杯でないなら、WEがその
位置に配置され、ポインタが更新される(ステップ40
3)。次に、ステップ404で、受信器が空から非空状
態への遷移を待っているかどうかを検出するために待ち
行列がチェックされる。
そのような遷移があった場合、受信器110に知らせる
ためにフラグQEがリセットされる。
あるいは、送信器が待ち行列に作業要素を入れる動作が
、受信器が待ち行列から作業要素をとり出す動作よりも
高速である場合、待ち行列が常に満杯と非満杯状態の間
でスワップされることがある。この定常的なスワップは
、第5図に示すヒステリシスを与えることによって避け
ることができる。この場合、待ち行列の予定の数(X)
まで報知を避けるという解決策が受信器によって行なわ
れる。この値Xは受信器によって動的に制御される。と
いうのは、受信器は、送信器から受は取られる信号の量
を知っているからである。この値Xは、実行される報知
の量と、報知の遅延の結果としてサービスされることな
く作業要素が待たなくてはならない時間との間の妥協と
して選択することができる。
ステップ501.502及び503はそれぞれ、第3図
のステップ301.302及び303に同一である。ス
テップ504では、QFフラグの状態が判断される。Q
Fフラグがオフであるとき。
待ち行列出し処理は終了される。QFフラグがオンであ
るとき、処理は、カウンタをインクリメントするステッ
プ505へ進む。次に、待ち行列の″満杯″状態がセッ
トされていたので、ステップ506で、受信器によって
予定の数(X)のシーケンスが実行されたかどうかを判
断するためにカウンタの値がチェックされる。もしカウ
ンタの値が予定の値Xに等しいなら、ステップ507が
実行され、これによりカウンタとQFフラグがリセット
されて、結局処理が完了する。もしカウンタの値が予定
の値Xに等しくないなら、待ち行列出し処理は直ちに終
了される。
第6図は、本発明の実施例の全体的な概要ブロック図で
ある。これにおいて、2つの通信ユニット、ユニット(
A)100及びユニット(B)110は、記憶制御装置
に接続された通信バス650及び660を介して記憶装
置640へのアクセスを共有する。通信ユニットA及び
Bの各々は。
待ち行列出し入れ動作によって記憶待ち行列を操作し得
る等価な制御ブロック610及び620に接続されてい
る。以下では、ユニットAから二二ットBへの通信経路
(AからBへの待ち行列)について説明するが、この同
一の構成要素は、後の第10図及び第11図に関連して
説明するように、ユニットAからユニットBへの通信経
路、または異なる優先度レベルの通信経路を与えるため
にも使用することができることに注意されたい。
通信装置の数は、ここで説明する構成に変更を要するこ
となく必要に応じて増加させることができる。すなわち
、各通信装置の対が、アプリケーションによって要求さ
れるだけの数のそれらの間の経路(必要なら全2重)と
して実施され得る。
その後者の場合、固有の記憶640が多重待ち行列を蔵
する。
制御ブロック610及び620は次の機能を担当する。
すなわち、 制御ブロック610は、A−B待ち行列に作業要素を入
れる働きを行う。
制御ブロック620は、A−B待ち行列から作業要素を
出す働きを行う。
それゆえ、制御ブロック610及び62oはともに全く
独立である。従って、制御ブロック620がA−B待ち
行列から作業要素を出す間に制御ブロック610がその
同一の待ち行列に作業要素を入れる。
上述の構成要素が他の待ち行列(例えばB−A待ち行列
)を与えるために使用される場合、制御ブロック610
及び620は次のような追加の機能を担当することにな
る。すなわち、 制御ブロック610が、B−A待ち行列から作業要素を
出す働きを行う。
制御ブロック620が、B−A待ち行列に作業要素を入
れる働きを行う。
こうして、所与の待ち行列に対して、待ち行列への出し
入れ処理が、制御ブロック610及び620によって個
別に且つ独立に管理される。送信ユニットAは、待ち行
列から情報を出す間に、受信ユニットBと干渉すること
なく待ち行列に情報を入れることができる。
次に、ユニットAからユニットBへのA−B待ち行列通
信経路の操作に関与する機構のみを説明する。
第7a図と第7b図とを参照すると、本発明の実施例が
詳細に示されている6 尚、説明の簡便のため、及び本発明の本質を強調するた
め、次のような仮定を置いた。
すなわち、制御ブロック610及び610は。
一度に1個のみの待ち行列入れまたは待ち行列出しコマ
ンドを処理する、言いかえると各制御ブロックは一度に
1つの待ち行列(この場合AからBへの待ち行列)を操
作すると仮定する。すなわち。
もし多重待ち行列を同時に管理しなくてはならないなら
、制御ブロック610及び620と同様の追加の制御ブ
ロックを使用することができる。
第5図に記述されているヒステリシスの処理は以下では
述べない。というのはこの分野の当業者なら容易にその
ヒステリシスの概念をこの実施例に導入することができ
ると考えるからである。また、作業要素WEのサイズは
一定であると仮定する。
通信ユニット100及び110は、アドレス・バス70
5と、データ・バス706と制御バス7o3を含むバス
650を共有する。それゆえ、バス650を介しての、
読み取り及び書き込み動作のためのメモリ・アクセスは
、第8図に関連して説明するように、直列化されている
。制御ブロック610は、比較回路730を有し、その
出力はレジスタ731に接続されている。2個のレジス
タ732及び733が、データ・バス706と、比較回
路730の2個の第1の入力に接続されている。レジス
タ733の出力は、INC(増分論理)734に接続さ
れ、その出力は比較回路730の第3の入力に接続され
ている。lNC334の出力はまたレジスタ735及び
736の入力にも接続され、それらのレジスタはデータ
・バス706及びアドレス・バス705にそれぞれ接続
されている。制御ブロック610はまた、n個の対レジ
スタ760 7602・・・760nに接続さ1・ れている選択回路737をも含む。各対レジスタ760
、は待ち行列i(例えば、AからBへの待ち行列を1と
し、BからAへの待ち行列を2とする、など)に関する
ポインタE及びDのアドレスに対応するA 、 (E)
及びA 、 (D)の値を含む。
選択されたレジスタの値A、(E)またはA 、 (D
)はバス738を介して選択回路737によってアドレ
ス・バス705に送られる。レジスタ739及び740
は、ユニット(A)100とデータ・バス706の間の
データの通信を許容する。すべてのレジスタと1選択回
路737と、比較回路730と、増分論理734は、以
下で説明するように5制御論理741によって制御され
る。
制御ブロック620は制御ブロック610と同一である
。制御ブロック620はコンパレータ930を含み、そ
の出力はレジスタ931に接続されている。2個のレジ
スタ932及び933が、データ・バス706及び、比
較回路930の2個の第1の入力に接続されている。レ
ジスタ933の出力はlNCR934に接続されている
。lNCR934はまたレジスタ935及び936の入
力にも接続されている。レジスタ935及び936は、
データ・バス706及びアドレス・バス7o5にそれぞ
れ接続されている6 制御ブロック620は、n個の対レジスタ960工・・
・960nに接続された選択回路937を含む。各対レ
ジスタ960.は、待ち行列iに関連するポインタE及
びDのアドレスに対応するA。
(E)及びA(D)の値を含む。選択されたレジスタA
 、 (E)またはA 、 (D)の値は、バス938
及びl    ・           1選択回路9
37を介してアドレス・バス705に送られ得る。レジ
スタ939及び940は、ユニット(B)110とデー
タ・バス706の間のデータの通信を許容する。すべて
のレジスタと、選択回路937と、比較回路930と、
INCR論理934は制御論理941によって制御され
る。
F0作用 Fl、A−B待ち行列へ情報を入れる処理任意の待ち行
列出し入れ処理の前に、初期化シーケンスが必要である
(初期プログラム・ロード、パワー・オン・リセット)
。すなわち、記憶装置640内の各待ち行列iにつき、
2個のレジスタ760、(A、(E)及びA・(D))
に、待ち行列1を操作するために使用されるE及びDポ
インタの記憶アドレスが充填される。
待ち行列入れ動作は、″待ち行列入れコマンド”701
を有効化するユニット(A)100からの要求で開始さ
れる。通信バス650の一部である。
rtcバス”703が、そのバスが使用可能であること
を表示するとすぐに、制御論理741が“有効A(E)
”702を立ち上がらせ、これにより選択回路737が
活動化される。バス704上にある″待ち行列ID”の
値がこの選択回路によって適正なA、(E)レジスタを
選択するために使用される。選択回路737は、′有効
A (E)”702によって活動化されると、選択した
レジスタ(A−(E))760 、の内容をttp、バ
ス”705上に配置する。
読み取り動作を示すため制御論理741によって゛′C
バス”703上に適当なコマンドが配置される。記憶装
置は、選択されると、leDバス”706上に読み取り
E値を返す。′Cバス”703がrzDバス”706の
有効性を示唆するとき、制御論理741が線707をオ
ンにセットする。この線はレジスタ732をセットする
。このときレジスタ732はE値を保持している。
“Cバス”703が、通信バス650が利用可能である
ことを示唆するとき、制御論理741が″有効A (D
)” 704を立ち上がらせ、これにより選択回路73
7が活動化される。値待ち行列ID”704はこの選択
回路によって、適正なA 、 (D)レジスタを選択す
るために使用される。
選択回路737は、″有効A(D)”によって活動化さ
れるとき、選択されたレジスタ(A 、 (D))76
01の内容をtrAバス”705上に配置する。
読み取り動作を表示するために、制御論理741によっ
て適当なコマンド741が“Cバス704上に配置され
る。記憶装置は、選択されると、“Dバス”706上に
読み取りD値を返す。”Cバス”703がtlDバス”
706の有効性を示唆するとき、制御論理741が線“
ラッチ−R1″709をオンにセットする。この線はレ
ジスタ733をセットし、今やレジスタ733はD値を
保持する。
以下の記述は、第4図に従う待ち行列入れ動作を実行す
るための異なるステップを説明するものである。
ステップ401 : INCR(E)=D?線″待ち行
列入れコマンド′″701がオンであるので、比較回路
730がレジスタ733の出力を、増分論理734の出
力と比較する。線″比較回路出力′″710はその比較
の結果を反映する。
ステップ402:WEが位置INCR(E)に配置され
る。
もし比較回路730の入力(レジスタ733の出力と増
分論理734の出力)が一致しないなら、線“比較回路
出力”710はオフである。そして、通信装置によって
”WEババス714上に配置された作業要素は位置IN
CR(E)において記憶装置に配置されなくてはならな
い。′Cバス”703が、通信バスが利用可能であるこ
とを示唆するときには、制御論理741が線“WE配装
”715及び” W E待ち行列入れ” 718を活動
化し、これによりドライバ736及び739がそれぞれ
有効化される。それゆえ、増分論理734の出力は“A
バス”705にゲートされ、”WEバスゝ′714は“
Dバス”706にゲートされる。
制御論理741はIIcバス”703上で書き込み動作
を示す。記憶装置は、選択されると、その作業要素を記
憶し、最終的に通信バス650が解放される。
Eポインタが更新される: E=INCR(E)LjC
バス”703が1通信バスが利用可能であることを示唆
するとき、制御論理741が、Eポインタ値の更新動作
を開始する。このとき、線″更新ポインタ” 716と
″有効A(E)”702が活動化される。増分論理73
4からの新しいE値がドライバ735を介して“Dバス
”706上に配置され、Eアドレスは1選択回路の出カ
フ38を介してrtAバス”705上に配置される。
((Cバス′″703がメモリ更新の終了を示唆すると
すぐに、制御論理741が、通信装置に対する動作の完
了を示すために線″処理完了” 713を活動化する。
I! It待ち行列入れコマンド”701が通信装置に
よって降下されると、待ち行列入れ動作が終了する。
ステップ403:”待ち行列満杯パが通信装置に返され
る。
もし比較回路730の入力(レジスタ733の出力と増
分論理734の出力)が一致するなら。
″比較器出力″′71oはオンである。制御論理741
は線711を立ち上げ、レジスタ731をセットする。
レジスタ731の出力である、線待ち行列−満杯一空′
″712は、通信装置に対して。
待ち行列主の満杯状態を反映する。通信装置1゜Oによ
って線“待ち行列入れコマンド”701が降下されると
すぐに、制御論理がIIA u処理完了″713を活動
化し、これによりレジスタ731がリセットされて待ち
行列入れ動作が終了する。
F2.A−B待ち行列から情報を出す処理上記説明から
見てとれるように、AからBへの待ち行列の待ち行列出
し処理は制御ブロック62Oによって実行される。同様
に、制御ブロック610はBからAへの待ち行列の待ち
行列出し処理を実行する。
前に指摘したように、以下の動作は、あたかも初期化シ
ーケンスの間に値A、(E)及びA 、 (D)1  
           l でレジスタ960.が充填されているかのように含意す
る。
E及びDポインタの取得 待ち行列出し要求を示すため通信装置100によって線
待ち行列出しコマンド” 917が立ち上げられたとき
、待ち行列出し動作が開始される。
通信バス650の一部である″Cバス”703が、その
バスが利用可能であることを示唆するとすぐに、制御論
理941が線“有効−A (D)”908を立ち上げ、
これにより選択回路937が活動化される。″待ち行列
ID”904の値は、この選択回路によって、適正なA
、(D)レジスタを選択するために使用される。″有効
A(D)”908によって活動化されると、選択回路9
37は、選択されたレジスタA 、 (D)の内容をI
t Aバス″905上に配置する。
読み取り動作を表示するために、制御論理941によっ
て″Cバス”703上に適当なコマンドが配置される。
記憶装置640は、選択されて11Dバス”706上に
読取りD値を返す。
ticバス”703がIIDバス”706の有効性を示
唆するとき、制御論理941が線907をオンにする。
この線はレジスタ932をセットする。
このとき、レジスタ932はD値を保持する。
”cバス”703が、通信バス650が利用可能である
ことを示唆するとすぐに、制御論理941が線“有効A
(E)”902を立ち上げ、これにより選択回路937
が活動化される。値待ち行列ID”904はこの選択回
路937によって、適正な”A、(E)”レジスタ90
2を選択するま ために使用され、選択回路937は、選択されたA、(
E)レジスタの内容を“Aバス”705上に配置する。
読み取り動作を示すために制御論理941によってII
Cバス”703上に適当なコマンドが配置される。そし
て記憶装置は、選択されて、IIDバス”706上に読
み取りE値を返す。次に、″Cバス”703が”pバス
”706(7)有効性ヲ示唆し、制御論理941がvA
909をオンにし、この線はレジスタ933をセットす
る。このときレジスタ933はE値を保持する。
以下の記述は、第3図に示う待ち行列出し処理を実行す
るための異なるステップを説明するものである。
ステップ301:E=D? 線待ち行列出しコマンド” 917がオンであるので、
比較回路930がレジスタ933の出力をレジスタ93
2の出力と比較し、線1′比較回路出力”910が比較
の結果を反映する。
ステップ303:WEが位置INCR(D)から読み出
される。
もし比較回路930の入力(レジスタ933及びレジス
タ932)が一致しないなら、線″比較回路出力”91
0はオフである。作業要素は、記憶装置内のアドレスI
NCR(D)において読み取られなくてはならない。L
ICパス”703が、通信バスが利用可能であることを
示唆するとき、制御論理941は線” W E l!1
iil!置” 915を活動化し、これによりドライバ
936が有効化される。
次に、増分論理934の出力がII Aバス”705上
に配置される。制御論理941はuCバス”703上で
読み取り動作を表示する。制御論理941は線待ち行列
出しWE”919を活動化し、これによりドライバ74
0が有効化される。それゆえ、“Dバス”706の内容
が“WEババス914上に配置される。
Dポインタが更新される: D= INCR(D)rr
cバス”703が1通信バス650が利用可能であるこ
とを示唆するとき、制御論理941が、Dポインタ値を
更新する動作を開始する。そして、線″更新ポインタ”
 916と“有効A(D)”908が活動化される。増
分論理からのこの新しいD値はドライバ935を介して
“Dバス”706上に配置され、Dアドレスは選択回路
の出力を介して“Aバス”705上に配置される。″C
バス″703がメモリ更新の終わりを表示するとすぐに
、通信装置に対する動作の完了を示すために制御論理9
41が線゛処理完了” 913を活動化する。
線待ち行列出しコマンド” 917が通信装置により降
下される(待ち行列から出された作業要素が通信装置に
よって“WEババス914から既に読み取られている)
とすぐに、待ち行列出し動作が完了する。
ステップ302:待ち行列空が通信装置900に返され
る。
もし比較回路930の入力(レジスタ932と933)
が一致するなら、線″比較回路出力″910がオンであ
る。制御論理941が線911を立ち上げ、これにより
レジスタ931がセットされる。レジスタ931の出力
である。線“待ち行列満杯−空″は1通信装置に、待ち
行列iの空状態を知らせる。線待ち行列出しコマンドゝ
′917が通信装置によって降下されるとすぐに、制御
論理941が線“処理完了” 913を活動化し、これ
によりレジスタ931がリセットされて待ち行列出し動
作が終了する。
尚、制御ブロック610及び620は、ある待ち行列i
について、一方が待ち行列入れ動作を行い、他方が待ち
行列出し動作を担当するという事実においてのみ互いに
相違するにすぎない。すなわち、7xx (xは任意の
数字)と参照番号を付された制御ブロック610の各要
素は、9XXと参照番号を付された制御ブロック620
中のそれと等価な要素に厳密に対応する。
第8図を参照すると、待ち行列出し入れの並列動作を実
行するために制御ブロック610及び620を介して記
憶装置640にアクセスする動作の例のタイム・チャー
トが示されている。
タイム・チャート(a)は、待ち行列入れ動作(Aから
Bへの待ち行列において)の間の制御ブロック610の
記憶装置640との通信に関連する。待ち行列入れ動作
はシーケンス801,802及び803を含む。シーケ
ンス801,802及び803を含む。シーケンス80
1は、例えば前述の、レジスタ732への格納以前にパ
Dバス″706上でのE値の読み取りに対応する。″読
み取り”(R)動作である。同様に、シーケンス802
は、レジスタ733への格納以前にIt D 、<ス″
706上でのD値の読み取りに対応する。シーケンス8
03は、作業要素WEを位置INCR(E)に書き込む
ための記憶640へのアクセスである6タイム・チャー
ト(b)は、待ち行列出し動作(AからBへの待ち行列
)において制御ブロック620の記憶装置640へのア
クセスを要約したものである。この待ち行列出し動作は
、シーケンス811.812及び813を有する。シー
ケンス811は例えば、レジスタ932に格納する以前
に、′Dババス706上でD値を読み取ることに対応す
る″読み取り”(R)動作である。同様に、シーケンス
812は、レジスタ933に格納する以前に、″Dバス
″上でE値を読み取ることに対応する。シーケンス81
3は、記憶装置640中で位置INCR(D)から作業
要素を読み取るための制御ブロック620による記憶装
置640へのアクセスである。
タイム・チャート(c)は、制御ブロック610及び6
20による通信バス650へのアクセスを要約するもの
である。読み取り/書き込み動作はバス/記憶装置レベ
ルでは直列化されているが、待ち行列の出し入れ動作は
重なることができ(読み取りと書き込みがインターリー
ブ(interleave)されている)、以て同一の
待ち行列上で待ち行列の出し入れを同時に行うことを可
能ならしめるアルゴリズムの恩恵が得られる。このとき
、明示的であれ暗示的であれ、インターロッキングは要
求されない。
G、他の実施例 第9A図序び第9B図を参照すると、本発明の第2のよ
り複雑な実施例が示されている。これにおいては、多重
バス構造と多重ポート・メモリ640を使用することに
よって、共有された記憶装置(メモ1月640の読み取
り/書き込みアクセスの並列性が完全に与えられる。こ
れにおいては、通信ユニット(A)100は、制御ブロ
ック610と第1の通信バス650を介して多重アクセ
ス・メモリ640にアクセスする。同様に、通信二ニッ
ト(B)110は制御ブロック620と第2の通信バス
660を介してメモリ640にアクセスする。制御ブロ
ック610と620は次のような機能を担当する。すな
わち、 制御ブロック610はB−A待ち行列から待ち行列出し
動作を行い、A−B待ち行列に待ち行列入れ動作を行う
制御ブロック620はA−B待ち行列から待ち行列出し
動作を行い、B−A待ち行列に待ち行列入れ動作を行う
この待ち行列出し入れ機能は、前述の第6図に関連して
説明したのと同じ動作に関与する。そして、所与の待ち
行列、例えばA−B待ち行列に対して、制御ブロック6
10及び620は独立に動作し得る。実際、この待ち行
列入れ機能は、アドレスA、(E)、A、(D)で読み
取り動作を行l              1 い、アドレスINCR(E)及びA、(E)で書き込み
を行うステップ401.402及び404(第4図参照
)に関与する。他方、待ち行列出し機能は、アドレスA
、(E)、A、(D)で読み取り動作を行いアドレスA
、(D)で書き込み動作を行うステップ301,302
.303及び304(第3図参照)に関与する。それゆ
え、ともに書き込み動作を行う制御ブロック610及び
620によっては、記憶装置中のどの位置もアドレスす
ることができない。ユニット100及び110間では待
ち行列出し入れの間にいかなる干渉も可能でなく、イン
ターロッキングは関与して来ない。
第10図を参照すると、2つの独立ユニットであるユニ
ット(A)100及びユニット(B)110の間に双方
向経路が示されている。そして、ユニット(A)1oO
及びユニット(B)11゜の間の通信を許容するために
待ち行列(2つのユニットの間に確立された一方向経路
毎に1つの待ち行列)が与えられている。待ち行列12
0はユニット(A)100からユニット(B)110へ
の情報の伝達を許容し、待ち行列130はユニット(B
)110からユニット(A)10oへの情報の伝達を許
容する。それゆえ、2つのユニットの間の全2重経路は
、各方向毎に1つづつの2つの待ち行列を必要とする。
第11図を参照すると、ユニット100及び110の間
に多重通信経路を与えるために待ち行列を結合させた組
み合せが示されている。待ち行列210及び220は2
つのユニットの間の通信に多重レベルの優先度を可能な
らしめる。このため、送信器は、所望のレベルの優先度
を表示する待ち行列識別子を記述することができる。
単位待ち行列を組み合わせることによって任意の複雑な
通信アーキテクチャを与えることができる。尚、すべて
の待ち行列は、必要に応じた数の(複数の対ユニットの
間の)通信経路を与える同一の記憶装置640中に配置
できることに注意されたい。
H0発明の効果 以上に説明したように、この発明によれば、インター・
ロッキングを要することなく受信器と送信器がそれぞれ
独立に待ち行列からデータを出し入れすることを可能と
する待ち行列機構が与えられる。
【図面の簡単な説明】
第1図は、待ち行列機構の一般的原理を示すブロック図
、 第2図は、メモリ中に配置された循環待ち行列の異なる
状況を示す図、 第3図は、待ち行列出し処理のフローチャート、第4図
は、待ち行列入れ処理のフローチャート、第5図は、ヒ
ステリシスをもつ待ち行列出し処理のフローチャート、 第6図は1本発明の第1の実施例の概要ブロック図、 第7a図及び第7b図は、第6図の構成の詳細なブロッ
ク図、 第8図は、本発明の構成の動作を示すタイム・チャート
、 第9a図及び第9b図は、本発明の他の実施例の詳細な
ブロック図。 第10図は、2つの独立ユニット間に双方向経路を与え
る2つの待ち行列を使用したアーキテクチャを示す図、 第11図は、多重優先度レベル通信経路を与えるアーキ
テクチャを示す図、 100・・送信器、120・・受信器、640・・第1
及び第2のポインタ・レジスタ、610・・第1の制御
ブロック、620・・第2の制御ブロック。 出願人  インターナショナル・ビジネス・マシーンズ
・コーポレーション 代理人  弁理士  山  本  仁  朗(外1名) FIG、3 侍ち行り」出し処理 リクーン FIG、4 待ち行列入れ9J!:運 ↓ ↓ リターレ 待ち行ンj止し幻、1里 エンF FIG、 5

Claims (1)

  1. 【特許請求の範囲】 複数の記憶位置をもち、送信器が該記憶位置に情報要素
    を入れ、受信器が該記憶位置から情報要素を取り出すよ
    うにした待ち行列手段を有するノン・ロッキング待ち行
    列機構であって、 (a)上記待ち行列手段中で、待ち行列から出された最
    後の情報要素が位置した記憶位置を識別する第1のポイ
    ンタ(D)をログするための第1のポインタ・レジスタ
    と、 (b)上記待ち行列手段中で、待ち行列に入れられた最
    後の情報要素が位置する記憶位置を識別する第2のポイ
    ンタ(E)をログするための第2のポインタ・レジスタ
    と、 (c)上記送信器によって活動化され、上記情報要素を
    上記待ち行列手段に入れ、上記第2のポインタを更新す
    るための第1の制御ブロックと、 (d)上記受信器によって活動化され、上記待ち行列手
    段から上記情報要素を取り出し、上記第1のポインタを
    更新するための第2の制御ブロックとを具備し、 以て上記送信器と上記受信器がインターロックまたは直
    列化を要することなく独立に動作できるようにした、 ノン・ロッキング待ち行列機構。
JP62285650A 1986-12-30 1987-11-13 ノン・ロツキング待ち行列機構 Pending JPS63168732A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP86430058A EP0273083B1 (en) 1986-12-30 1986-12-30 Non-locking queueing mechanism
FR86430058.7 1986-12-30

Publications (1)

Publication Number Publication Date
JPS63168732A true JPS63168732A (ja) 1988-07-12

Family

ID=8196418

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62285650A Pending JPS63168732A (ja) 1986-12-30 1987-11-13 ノン・ロツキング待ち行列機構

Country Status (4)

Country Link
US (1) US4980852A (ja)
EP (1) EP0273083B1 (ja)
JP (1) JPS63168732A (ja)
DE (1) DE3689151D1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007058749A (ja) * 2005-08-26 2007-03-08 Sony Corp 情報処理装置、情報記録媒体、および情報処理方法、並びにコンピュータ・プログラム
JP2011118914A (ja) * 2010-12-28 2011-06-16 Sony Corp 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
US8046837B2 (en) 2005-08-26 2011-10-25 Sony Corporation Information processing device, information recording medium, information processing method, and computer program

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0418447B1 (en) * 1989-09-20 1995-01-18 International Business Machines Corporation Device for controlling the enqueuing and dequeuing operations of messages in a memory
US5239634A (en) * 1989-09-21 1993-08-24 Digital Equipment Corporation Memory controller for enqueuing/dequeuing process
GB8921653D0 (en) * 1989-09-26 1989-11-08 Lucas Ind Plc Interface circuit
JPH0619759B2 (ja) * 1990-05-21 1994-03-16 富士ゼロックス株式会社 マルチプロセッサシステムにおける相互通信方法
US5224215A (en) * 1990-07-13 1993-06-29 International Business Machines Corporation Message queue processing among cooperative processors having significant speed differences
JP2836283B2 (ja) * 1991-04-11 1998-12-14 日本電気株式会社 バッファ管理方式
FR2676845B1 (fr) * 1991-05-23 1993-09-24 Sextant Avionique Dispositif pour la gestion de plusieurs files d'attente independantes dans un espace memoire commun et banalise.
CA2125607A1 (en) * 1993-06-30 1994-12-31 David Thielen Method and system for buffering transient data
US5581705A (en) * 1993-12-13 1996-12-03 Cray Research, Inc. Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system
US5548728A (en) * 1994-11-04 1996-08-20 Canon Information Systems, Inc. System for reducing bus contention using counter of outstanding acknowledgement in sending processor and issuing of acknowledgement signal by receiving processor to indicate available space in shared memory
US5696991A (en) * 1994-11-29 1997-12-09 Winbond Electronics Corporation Method and device for parallel accessing data with optimal reading start
US6446224B1 (en) * 1995-03-03 2002-09-03 Fujitsu Limited Method and apparatus for prioritizing and handling errors in a computer system
US5649157A (en) * 1995-03-30 1997-07-15 Hewlett-Packard Co. Memory controller with priority queues
US5841973A (en) * 1996-03-13 1998-11-24 Cray Research, Inc. Messaging in distributed memory multiprocessing system having shell circuitry for atomic control of message storage queue's tail pointer structure in local memory
US5864738A (en) * 1996-03-13 1999-01-26 Cray Research, Inc. Massively parallel processing system using two data paths: one connecting router circuit to the interconnect network and the other connecting router circuit to I/O controller
US5938747A (en) * 1997-03-13 1999-08-17 Adapter, Inc. Hardware command block delivery queue for host adapters and other devices with onboard processors
US6012107A (en) * 1997-05-22 2000-01-04 Adaptec, Inc. Hardware control block delivery queues for host adapters and other devices with onboard processors
US6115761A (en) * 1997-05-30 2000-09-05 Lsi Logic Corporation First-In-First-Out (FIFO) memories having dual descriptors and credit passing for efficient access in a multi-processor system environment
US6615296B2 (en) 1997-05-30 2003-09-02 Lsi Logic Corporation Efficient implementation of first-in-first-out memories for multi-processor systems
IL125271A0 (en) * 1998-07-08 1999-03-12 Galileo Technology Ltd Head of line blocking
US6216174B1 (en) 1998-09-29 2001-04-10 Silicon Graphics, Inc. System and method for fast barrier synchronization
US6449614B1 (en) 1999-03-25 2002-09-10 International Business Machines Corporation Interface system and method for asynchronously updating a share resource with locking facility
US6687729B1 (en) * 1999-12-20 2004-02-03 Unisys Corporation System and method for providing a pool of reusable threads for performing queued items of work
GB0031761D0 (en) * 2000-12-29 2001-02-07 Mitel Semiconductor Ltd Data queues
GB2382899B (en) 2000-12-29 2003-12-17 Zarlink Semiconductor Ltd A data queue system
WO2003042811A1 (en) * 2001-11-13 2003-05-22 Koninklijke Philips Electronics N.V. Efficient fifo communication using semaphores
TW573254B (en) * 2002-01-07 2004-01-21 Via Tech Inc Message transmission queue and operation method thereof
DE60304468T2 (de) * 2002-06-07 2007-03-15 Koninklijke Philips Electronics N.V. Spacecake coprozessor kommunikation
US9448856B2 (en) * 2005-12-30 2016-09-20 Level 3 Communications, Llc Lock-free dual queue with condition synchronization and time-outs
US7904789B1 (en) * 2006-03-31 2011-03-08 Guillermo Rozas Techniques for detecting and correcting errors in a memory device
US9196347B2 (en) * 2013-03-14 2015-11-24 International Business Machines Corporation DRAM controller for variable refresh operation timing
US10409800B2 (en) * 2015-08-03 2019-09-10 Sap Se Priority queue for exclusive locks

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS51135337A (en) * 1975-05-19 1976-11-24 Mitsubishi Electric Corp Data treatment device
JPS5972539A (ja) * 1982-10-18 1984-04-24 Nippon Telegr & Teleph Corp <Ntt> デ−タ転送方式

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL165859C (nl) * 1975-04-25 1981-05-15 Philips Nv Station voor informatie-overdracht.
DE2714106C3 (de) * 1977-03-30 1982-01-14 Telefonbau Und Normalzeit Gmbh, 6000 Frankfurt Verfahren zum Zwischenspeichern von Informationen in einem FIFO-Speicher
US4402046A (en) * 1978-12-21 1983-08-30 Intel Corporation Interprocessor communication system
DE3149678C2 (de) * 1981-12-15 1984-02-23 Siemens AG, 1000 Berlin und 8000 München Anordnung zur Zwischenspeicherung von zwischen zwei Funktionseinheiten in beiden Richtungen zu übertragenden Informationen in einem Pufferspeicher
US4507760A (en) * 1982-08-13 1985-03-26 At&T Bell Laboratories First-in, first-out (FIFO) memory configuration for queue storage
NL8501143A (nl) * 1985-04-19 1986-11-17 Philips Nv Kommunikatiesysteem voorzien van een eerst-in-eerst-uit-buffer.
US4794521A (en) * 1985-07-22 1988-12-27 Alliant Computer Systems Corporation Digital computer with cache capable of concurrently handling multiple accesses from parallel processors
US4783730A (en) * 1986-09-19 1988-11-08 Datapoint Corporation Input/output control technique utilizing multilevel memory structure for processor and I/O communication

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS51135337A (en) * 1975-05-19 1976-11-24 Mitsubishi Electric Corp Data treatment device
JPS5972539A (ja) * 1982-10-18 1984-04-24 Nippon Telegr & Teleph Corp <Ntt> デ−タ転送方式

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007058749A (ja) * 2005-08-26 2007-03-08 Sony Corp 情報処理装置、情報記録媒体、および情報処理方法、並びにコンピュータ・プログラム
US8046837B2 (en) 2005-08-26 2011-10-25 Sony Corporation Information processing device, information recording medium, information processing method, and computer program
US8516600B2 (en) 2005-08-26 2013-08-20 Sony Corporation Information processing device, information recording medium, information processing method, and computer program
JP2011118914A (ja) * 2010-12-28 2011-06-16 Sony Corp 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム

Also Published As

Publication number Publication date
US4980852A (en) 1990-12-25
EP0273083B1 (en) 1993-10-06
EP0273083A1 (en) 1988-07-06
DE3689151D1 (de) 1993-11-11

Similar Documents

Publication Publication Date Title
JPS63168732A (ja) ノン・ロツキング待ち行列機構
US5020020A (en) Computer interconnect system with transmit-abort function
EP1856623B1 (en) Including descriptor queue empty events in completion events
US7058735B2 (en) Method and apparatus for local and distributed data memory access (“DMA”) control
US7234004B2 (en) Method, apparatus and program product for low latency I/O adapter queuing in a computer system
EP0599449A2 (en) Data communication system and method
JPH03130863A (ja) 制御要素転送システム
JPH0642236B2 (ja) コマンダノードからのインターロック読み取りコマンドメッセージをレスポンダノードで実行する装置
EP0351955A2 (en) Multiprocessor systems with cross-interrogated store-in-caches
KR0128274B1 (ko) 인터페이스 시스템 및 그 동작 방법
JPH02232758A (ja) マルチプロセッサ用システム制御ユニットをインタフェースするための装置
US4769769A (en) Communication system including a first-in-first-out buffer
JP2000155740A (ja) 多重論理fifoによる1対多バスブリッジ
US4151598A (en) Priority assignment apparatus for use in a memory controller
EP2383659B1 (en) Queue depth management for communication between host and peripheral device
JPH0587854B2 (ja)
US6618354B1 (en) Credit initialization in systems with proactive flow control
US5341475A (en) Method for exchanging messages between a shared memory and communication adapters using an efficient logical protocol
US5944788A (en) Message transfer system and control method for multiple sending and receiving modules in a network supporting hardware and software emulated modules
US5999969A (en) Interrupt handling system for message transfers in network having mixed hardware and software emulated modules
EP0267974B1 (en) Control interface for transferring data between a data processing unit and input/output devices
JP3703532B2 (ja) 多重化アドレスバスを備えたコンピュータシステム
EP0418447B1 (en) Device for controlling the enqueuing and dequeuing operations of messages in a memory
US6654861B2 (en) Method to manage multiple communication queues in an 8-bit microcontroller
EP0571683A1 (en) High performance data re-alignment mechanism with multiple buffers in a memory access control device