JPH07253885A - パイプラインで相互に逆方向に流れるデータ要素を管理するシステム及び方法 - Google Patents

パイプラインで相互に逆方向に流れるデータ要素を管理するシステム及び方法

Info

Publication number
JPH07253885A
JPH07253885A JP6281578A JP28157894A JPH07253885A JP H07253885 A JPH07253885 A JP H07253885A JP 6281578 A JP6281578 A JP 6281578A JP 28157894 A JP28157894 A JP 28157894A JP H07253885 A JPH07253885 A JP H07253885A
Authority
JP
Japan
Prior art keywords
data
pipeline
stage
data element
stages
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP6281578A
Other languages
English (en)
Other versions
JP3588487B2 (ja
Inventor
Charles E Molnar
チャールズ・イー・モルナー
E Sutherland Ivan
アイヴァン・イー・サザーランド
Robert F Sproull
ロバート・エフ・スプロール
Ian W Jones
イアン・ダブリュ・ジョーンズ
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH07253885A publication Critical patent/JPH07253885A/ja
Application granted granted Critical
Publication of JP3588487B2 publication Critical patent/JP3588487B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/02Comparing digital values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines

Abstract

(57)【要約】 【目的】両方向のデータ・フローを制御でき、相互に逆
の方向に流れるデータ要素がパイプラインの各段で確実
に相互作用できるようにする2方向パイプラインを提供
すること。 【構成】 パイプラインの各段は2つの隣接する段とし
か通信しない。段間の通信は、順方向に流れるデータ・
ストリームと逆方向に流れるデータ・ストリームを調整
するように両方向に進む。一方の方向に流れるあらゆる
データ要素が、他の方向に流れるデータ要素にパイプラ
インのある段で一度だけ出会うようにするための回路が
含まれている。データ要素どうしが出会うとき、所与の
アプリケーションに固有の回路がそれらのデータ要素を
比較し、一方から他方へデータをコピーし、あるいはそ
の他の方法でそれらのデータ要素を相互作用させる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はコンピュータに関し、さ
らに詳細には、相互接続された段を含む2方向パイプラ
インで相互に逆方向に流れるデータ要素を管理するため
のシステムに関する。
【0002】
【従来の技術】計算パイプラインは何年も前から、信号
処理、汎用計算装置、およびその他のディジタル計算ア
プリケーションで使用されている。計算パイプラインで
は、情報がパイプラインを介して主として1つの方向に
ある段から他の段へ流れ、パイプラインの様々な段で様
々な方法で処理される。計算パイプラインの初期の応用
例の1つに、コンピュータ・グラフィック・イメージを
レンダリングするためのものがある。この種のパイプラ
インでは、イメージを表すデータがコンピュータ・メモ
リから一連の処理段を介して、最終的にコンピュータ・
ディスプレイ上に表示される。他の種類の計算パイプラ
インは一般的に乗算に使用されている。この場合、乗算
を構成する多数の加算はパイプラインの段として構成さ
れる。被乗数がパイプラインを通過するにつれて、パイ
プラインの端で完全積が形成されるように、各段で部分
積が累積されていく。コンピュータでのパイプラインの
このような使用法では、データ要素は単一の方向にしか
流れない。
【0003】縮小命令セット・コンピュータ(RIS
C)プロセッサも内部パイプラインを使用して命令を実
行する。パイプラインの第1段で、命令メモリから命令
が取り出される。後ろの段で、命令が様々に復号され、
実行され、その答えが記録される。そのようなパイプラ
インでは、最初の命令で計算されたデータができるだけ
早く後の命令に渡されるように、後ろの段の出力を前の
段の補助入力に接続する「バイパス」接続があるのが一
般的である。バイパス経路がない場合、すべての計算済
みデータをレジスタ・ファイルに記録しないかぎり、後
ろの命令にアクセスすることはできない。
【0004】そのようなRISCプロセッサでは、複数
のバイパス経路のために重大な設計上の問題が発生す
る。ほぼあらゆる段からほぼあらゆる前の段へのバイパ
スが必要とされるので、各段は多数の入力を有する。そ
のように多数のデータ経路上でデータ・フローを管理す
る必要によって、そのようなRISCコンピュータ用の
制御システムを設計することは難しくなっている。各段
は入力をその前段から取るか、それとも多数のバイパス
経路のうちのどれかから取るかを選択しなければならな
いので、単一の段の設計でも非常に複雑になる。
【0005】今日使用されている大部分の計算装置は同
期式であり、外部から提供されるクロック信号を使用し
て、一連の動作を順次実行する。各動作は、次のクロッ
ク事象が到達した後にしか実行されず、すべての部分が
動作する場合、厳密に同じ間隔で実行される。
【0006】非同期回路では、ローカル条件で許容され
るときには、各個別の部分は独立に動作する。ローカル
論理機構は、条件が正しいときを検出して適当な動作を
開始する。非同期パイプライン中の各段と次の段とが、
前記次の段へのデータ転送が適切であると合意するとき
には、各段は外部クロッキング信号を参照せずにそのよ
うなトランザクションを行う。
【0007】同期システム中のバイパス経路構造は2つ
の理由で望ましくない。第1に、集積回路が大規模にな
るにつれて、長いバイパス経路での遅延が過度なものに
なり、より遅いクロック速度が必要になる。第2に、大
規模な集積回路では、パイプラインのすべての部分に同
じクロック信号を転送することは難しい。パイプライン
の異なる部分へのクロック信号のタイミングの差を「ク
ロック・スキュー」と呼ぶ。近くのクロック信号に対し
てクロックがスキューされているパイプライン中で遠く
に位置するソースからきたデータを受け入れることは難
しく、あるいは不可能である。
【0008】非同期システムでは、その遠くにある部分
が、ローカル情報の動作時間とはまったく独立に動作す
ることがあるので、バイパス経路を実施するのは非常に
難しい。非同期システム中の遠く離れた段間でデータを
移動する際には十分に注意しなければならない。設計上
の注意が不十分であると、データ要素が損傷を受け、あ
るいは失われ、したがって、システムが信頼できないも
のになることがある。1つには、このタスクの難しさの
ために、現在、非同期システムはめったに使用されな
い。
【0009】最後に、バイパス構造が存在するには、デ
ータがいつ実際にパイプラインで移動するかを慎重に制
御する必要がある。今日使用されている大部分のシステ
ムでは、どれかの段がデータを移動できなくなった場
合、その段は、それ自体が停止することを他のすべての
段に通知し、他のすべての段は待機する。停止信号は、
どの段でも発信することができ、かつすべての段に転送
しなければならないので、多数の入力項目を含む論理関
数だけでなく、冗長な通信経路も伴う。これらは共に遅
延の原因となる。したがって、停止信号自体がシステム
中のペーシング項目になることがある。
【0010】主として設計者が設計が難しいとみなして
いるため、非同期パイプラインはまれである。幾つかの
非同期パイプラインは現在、主として信号処理アプリケ
ーションおよび入出力アプリケーションにおいて先入れ
先出しバッファ・メモリで使用されている。特に簡単な
形の非同期パイプラインは、米国特許第5187800
号および第4837740号と、Micropipel
inesと題する文献に記載された。これまでに作成さ
れた非同期パイプライン装置では、情報は単一の方向に
しか流れず、あるいは情報が複数の方向に流れる場合
は、別々の方向用にまったく別々の機構が使用される。
そのような構造は、1方向パイプラインを複合した使用
法に過ぎない。
【0011】今までの所、非同期設計形式の多数のバイ
パス経路を含むRISCコンピュータは、設計者の能力
を超えていることが立証されている。今までに設計され
た非同期RISC(Caltech、Manchest
er)で、バイパス経路を不要にしたものはほとんどな
く、したがって、不要な遅延および機能低下が発生して
いる。
【0012】弾性対非弾性 パイプライン・システムは「弾性」でも「非弾性」でも
よい。弾性パイプラインでは、必要に応じて、パイプラ
インを介して流れるデータのストリーム中のギャップを
形成することも、あるいは消すこともできる。一方、非
弾性パイプラインでは、「バブル」と呼ばれる規則正し
いデータ・ストリーム中のギャップは所定の位置のまま
である。弾性パイプラインは非弾性パイプラインよりも
融通性に富む。たとえば、弾性パイプラインのある段階
が特定のデータ要素に作用するのに通常よりも長い時間
を必要とする場合、すでに遅延段を通過した他のデータ
要素は、結果としてデータ・ストリーム中にギャップを
導入することになっても制限なしに自由に進んでいく。
したがって、様々な段の処理時間の差は、様々な種類の
バッファによって平滑化することができる。しかし、重
要なこととして、弾性パイプラインでは既存のデータ要
素を削除し、パイプライン内に新しいデータ要素を挿入
することができる。弾性パイプラインでは、特定のデー
タ要素を削除すると単に、後のデータ要素を充填できる
ギャップが単に残るだけである。同様に、弾性パイプラ
インはパイプライン中の後の要素の転送を遅延させるこ
とによって、新しいデータ要素を自由に挿入することが
できる。これらの挿入動作および削除動作は、記憶され
ているデータの特定の部分が画面に表示されず、したが
ってデータ・ストリームから削除すべきであり、あるい
は現在の視点が、表示されているオブジェクトの特定の
部分に非常に近いので、前記視点をさらに詳細に表示す
べきであることを計算の一部によって判定できるグラフ
ィクス・パイプラインで使用されている。
【0013】システムによっては、弾性パイプラインの
利益の一部が、「バブル」によって、普通なら非弾性の
システムで得られる。そのような非弾性システムでは、
データ要素のストリームが規則正しい間隔で離間され
る。あるデータ要素が削除されると規則正しい間隔が破
壊される。データ要素は、単に削除される代わりに、空
白またはバブルと置換される。バブルは、データ要素の
位置を保持するが、計算には入らない。非弾性パイプラ
インは、バブルを導入することによって、削除を処理す
ることができる。ただし、非弾性パイプラインは、この
ように生成されたギャップを充填するので速度上の利点
を得ることはできない。非弾性パイプラインは、既存の
バブルと置換しない限り、新しいデータをストリームに
挿入することができない。利用できるバブルがないと、
新しいデータを挿入することはできなくなる。
【0014】パイプライン用のアプリケーション 2つのデータ・ストリームのすべての要素を比較するこ
とが望ましい多数のアプリケーションがある。多くのア
プリケーションでは、一方の方向に流れるそれぞれのま
たはあらゆるデータが他の方向に流れるそれぞれのまた
はあらゆるデータと相互作用することが重要である。2
つの相互に逆の方向に流れるデータ要素が相互作用なし
で通過する場合、そのようなアプリケーションの機能が
破壊される恐れがある。たとえば、ワード探索アプリケ
ーションでは、探索中のテキスト中のそれぞれのまたは
あらゆるワードが実際に、それぞれのまたはあらゆる探
索ワードと突き合わせて試験されることが重要である。
「逆同期比較」の語は、本明細書では、パイプラインの
何らかの段で一度だけ、相互に逆の方向に進む要素間で
相互作用が発生することを意味する。
【0015】1つの形の比較回路は、特定のキーワード
用の探索テキストに適用される探索エンジンで使用され
ている。そのようなシステムでは、各キーワードがシス
テム中の固定段に記憶され、探索すべきテキストが、1
方向パイプラインを介してこれらのキーワードを通過す
る。パイプライン中の各段で、記憶されているワードが
通過するワードと比較され、あらゆる一致が報告され
る。
【0016】そのような1方向計算パイプラインは、比
較的固定されたデータ・セットを比較的可動のセットと
比較することができる。各ステップで計算パイプライン
中の段と同じ数の比較が実行され、移動するセットの各
要素が順番に、固定セットの各メンバに出会う。
【0017】移動するデータ要素が順番にパイプライン
の各段に出会うので、各データ要素を一度に1つの場所
だけに送ればよく、その場所はデータ要素のソースに近
接したもの、すなわち計算パイプラインの前段である。
したがって、計算パイプラインは、高スループットを有
し、連想メモリなどの代替比較回路よりも必要とされる
電力が少ない。
【0018】1方向計算パイプライン中の段の数は、固
定データ・セットに存在できるデータ要素の数を制限す
る。通常、固定データ・セットの各要素ごとに1つのセ
ルまたは1つの段があり、移動するセットの新しい要素
を比較のために入力するよりも固定セットの要素を変更
することの方が比較的難しい。
【0019】シストリック・アレイも過去に説明されて
いる。シストリック・アレイ計算装置では、類似の段の
アレイは何らかの複雑な計算動作を実行するように最も
近い段と通信する。シストリック・アレイでは、当技術
分野で一般に理解されているように、隣接する要素間の
通信が規則正しいスケジュールで行われる。各段での計
算動作は、このデータ転送スケジュールに適合しなけれ
ばならない。
【0020】パイプライン接続は通信システムでも使用
されている。たとえば、Seitzは、メッセージが特
定の発信元から特定の宛先へ進むようにネットワーク中
の1つの段から他の段に送られるシステムを説明してい
る。Seitzのシステムでのメッセージは両方向へ進
むが、2つのフロー中のデータ要素は完全に独立してい
る。ある方向へ流れるメッセージと他の方向へ流れるメ
ッセージの間に相互作用はない。
【0021】
【発明が解決しようとする課題】本発明は、両方向のデ
ータ・フローを制御でき、相互に逆の方向に流れるデー
タ要素がパイプラインの各段で確実に相互作用できるよ
うにする2方向パイプラインを提供する。
【0022】
【課題を解決するための手段】本発明は、規則正しい経
路に沿った逆方向への不規則なデータ・フローを提供し
て、後ろの段から前の段へのデータ転送を大幅に簡単に
する。本発明によれば、データは、送られるデータ、デ
ータが送られる際に通過する特定の段、およびデータに
対して実行される予定の動作に応じて、不規則なスケジ
ュールで移動することができる。本発明は、2つのデー
タ・セットを対称的に扱い、RISCコンピュータ用の
非常に簡単で規則正しい構造を形成することができる。
パイプライン中の各段は主として、その段の先の段と後
ろの段だけと通信する。データ要素は使用される前にい
くつかの段を通過することができる。本発明は、RIS
Cコンピュータで共通に見られる複雑な1組のバイパス
経路を単一の戻り経路と置換することによって、重要な
設計の単純性を得る。直接バイパス経路を介するのでは
なくいくつかの段を介してデータを送信する遅延は、簡
単な設計で高速度が可能なため最小限のものである。
【0023】本発明は新規の同期実施態様および非同期
実施態様を含む。今日の同期パイプラインは通常、段間
のハンドシェーク・プロトコルによって動作する。その
ようなハンドシェーク・プロトコルでは、受信側が、新
しいデータ要素を収容するための空間があることを送信
側に示す。データ要素が利用可能な場合、送信側はその
データ要素を取るべきであることを受信側に示す。した
がって、現在使用中のハンドシェーク・プロトコルで
は、データをいつ転送すべきかを決定するのは送信側だ
けである。この方法は、「バブル」、すなわち普通なら
円滑なデータ・フロー中の空の場所に順応する。本発明
は、データがいつ、ある段から次の段に移動できるか
を、隣接する段が相互にかつ対称的に決定する対称形の
通信を含む。
【0024】本明細書で開示される相互に逆の方向に流
れる計算パイプライン用の非同期実施態様は、情報を非
同期にかつ同時に2方向に送る能力が独特である。
【0025】本発明は、相互に逆の方向に流れる2つの
データ・ストリーム間の逆同期(countersynchrocized)
比較を行うための簡単な対称的機構を記述するものであ
る。この機構が対称的で簡単なものであるため、様々な
タスクを実行するための特定の計算装置を接続する豊富
な機会が容易に実現され、提供される。逆方向同期比較
を行うために特殊な回路が含められている。カウンタフ
ロー・パイプラインの逆同期比較によって、前記パイプ
ラインは最も有用になり、いくつかの利点を提供する。
【0026】本発明は大域的機能停止信号の必要をなく
す。各段は自立しており、通信する必要があるのは、隣
接する段だけである。必要とされるのがローカル通信だ
けなので、長い接続と、その接続がもたらす遅延および
電力消費量とが不要になる。ある段が動作するのにさら
に時間が必要である場合、前記ある段は、それに隣接す
る段がうまく動作するように、前記隣接する段だけに通
知する。
【0027】本発明は、ローカル制御をこのように使用
することによって、非同期システムで使用するのに理想
的なものになる。非同期システム中の各段は、それ自体
のペースで進み、データを受け入れ、あるいは送る準備
ができたことを隣接する段に通知することができる。大
域クロックは不要であるが、さらに重要なこととして、
大域的制御信号が不要である。バイパス経路を含む同期
システムに共通に見られる機能停止信号は不要になる。
【0028】本発明は双方向的で、かつ弾性的であるパ
イプラインを提供する。従来、弾性パイプラインは単一
方向だけに流れるものとして説明されてきた。本発明
は、他の方向のデータ・フロー中のギャップによって相
互作用が不要になる場合に、相互作用のないパイプライ
ンに沿ったどちらかの方向のフローを可能にすることに
よって、パイプラインの弾性特性を拡張する。
【0029】発明の詳細な説明 概要 本発明は、直線状に進む一連の段から成るカウンタフロ
ー・パイプラインを含む。この説明のために、直線状進
行が垂直なものとみなされるように上下に重なりあった
ものとして段を記述する。もちろん、すべての電子シス
テムと同様に、論理的に隣接する段が合理的に近接して
いる限り、空間での段の実際の配置は、段の正しい動作
とは無関係である。
【0030】パイプライン中の各段は、前記各段に直接
隣接する2つの段とどちらの方向へでも通信することが
できる。通信が双方向的なものなので、情報は1組の段
に沿って上向きにも下向きにも流れることができる。
【0031】カウンタフロー・パイプラインは、パイプ
ラインを上向きに流れる1組のデータ要素とパイプライ
ンを下向きに流れる他の1組のデータ要素を同時にスト
リーム化することができる。上向きストリーム化動作と
下向きストリーム化動作は独立のものでよい。どちらか
のデータ・ストリームのすべてまたは一部は、前記スト
リームの始めにそれにデータを送り、前記ストリームの
終りにそれからデータを受け入れる機構の必要に応じて
移動することも、あるいは静止し続けることもできる。
制御機構によってパイプラインが両方向で「弾性的」に
なるので、データ・ストリームのどちらかまたは両方に
ギャップが存在することができる。
【0032】段間の実際の通信は、任意の好都合な機構
に適応させることができる。大部分の場合、通信は、伝
達すべき各データ・ビットごとに1本ある適当な1組の
ワイヤを介して行われる。段間の通信は、データ要素全
体を送るために複数のステップを必要とする、一度に1
ビットだけ送る直列形でも、あるいは一度に複数ビット
送る直列形でもよい。同様に、通信は、電気的手段で
も、光学手段でも、音響手段でも、その他の適当な手段
でも行うことができる。
【0033】カウンタフロー・パイプラインの各段は、
一方が順方向に流れるデータ要素用のもので、他方が逆
方向に流れるデータ要素用のものである、少なくとも2
つのメモリ要素、たとえばレジスタを含む。もちろん、
これらのレジスタのどちらかまたは両方は、その方向の
規則正しいデータ・フロー中にギャップがある場合、い
つでも空になることができる。これらのレジスタが共に
データ要素を含むのは、データが両方向に提供される場
合だけである。
【0034】2つのストリーム中のデータ要素はサイズ
が異なっても、あるいは機能が異なってもよい。同様
に、2つのストリーム中のビットの意味は、類似するも
のでも、あるいはまったく異なるものでもよい。上向き
フロー用のレジスタは下向きフロー用のレジスタと同じ
数のデータ・ビットでも、それより多いデータ・ビット
でも、それより少ないデータ・ビットでも収容すること
ができる。大部分の有用なシステムでは、各段中の2つ
のレジスタ中のビットの数は異なる。さらに、パイプラ
インの異なる部分は、その処理段でのデータ要素のニー
ズに合うように、必要に応じてより多くのビットまたは
より少ないビットを保持するレジスタをもつことができ
る。上向きフローは異なる場所で、下向きフローよりも
「広く」ても、あるいは「狭く」てもよい。これは、ス
トリーム中の各データ要素中のビット数を指す。
【0035】レジスタ占有の4つの可能な状態がある。
どちらのレジスタもデータ要素を含まない場合、その段
は「空」(E)であると言われる。両方のレジスタがデ
ータ要素を含む場合、その段は「一杯」(F)であると
言われる。1つのレジスタだけがデータ要素を含む場
合、その段は、話の都合に応じて「半分充填」されてい
るとも、あるいは「半分空」であるとも言われる。半分
充填されており、あるいは半分空であるときの段の状態
は、存在するデータ要素によって命名することができ
る。たとえば、この状態は、上向きストリームに関連す
るレジスタだけがデータ要素を含む場合は「上向き」
(U)と言われ、下向きストリームに関連するレジスタ
だけがデータ要素を含む場合は「下向き」(D)と言わ
れる。したがって、段は、状態「E」、状態「F」、状
態「U」、あるいは状態「D」であると言うことができ
る。
【0036】段間の通信回路は、1)ある段中の上向き
レジスタから次の段中の上向きレジスタへの上向きと、
2)ある段中の下向きレジスタから前の段中の下向きレ
ジスタへの下向きの2つの方向にデータを送るように働
く。レジスタと通信回路は共に、2つのストリームのデ
ータ要素がパイプラインの一方の端から他方の端へ流れ
る際に通過する経路を提供する。上向きデータ・ストリ
ームはパイプラインの最下段に流れ込み、最上段から流
出し、下向きデータ・ストリームはパイプラインの最上
段に流れ込み、最下段から流出する。
【0037】両方のストリーム用の制御回路は対称的な
ものである。上向きストリーム用の制御回路は、下向き
ストリーム用の制御回路と対称的であり、制御中の段の
上および下にある段の役割は、明らかに逆のものであ
る。ラベル以外では、どちらが上向きストリームを制御
して、どちらが下向きストリームを制御するかに関して
制御回路を区別する必要はない。
【0038】2つのストリーム上で発生するサイズ、意
味、および処理は異なるものでよいが、2つのストリー
ムは共に可動であり、同様に制御することができる。連
想メモリや、1つの可動データ・セットおよび1つの比
較的固定されたデータ・セットを提供する現在使用中の
通常のパイプライン・プロセッサと異なり、カウンタフ
ロー計算パイプラインは、2つの同様に可動のデータ・
ストリームの相互作用を可能にする。
【0039】カウンタフロー・パイプラインの各段は、
必要に応じて比較回路を含むことができる。両方のデー
タ要素が存在し、状態(F)である場合、そのような比
較回路は上向きフローのデータ要素のすべてまたはある
部分を、下向きフローのデータ要素のすべてまたはある
部分と比較することができる。どちらかまたは両方のデ
ータ要素が欠けている場合、比較回路は遊休状態のまま
である。一般に、そのような比較回路が、データ要素の
「タグ」部分または「アドレス」部分と呼ばれるデータ
要素の一部しか比較しないことは有用である。データ要
素の他の部分は比較の結果に応じて様々な方法で処理す
ることができる。大部分の使用法では、各段は、「逆同
期比較」の特性が得られるように比較回路を含む。
【0040】「一致」の語は、本明細書では比較の成功
を示すために使用されているが、比較が多数の形を取れ
ることを理解されたい。「一致」の語は、比較によっ
て、試験中のデータ要素の2つの部分のIDをビットご
とにシークされることを含意するように思えるが、ビッ
トごとの一致は単なる比較の最も簡単な形であり、2つ
のデータ・ストリーム間のデータ処理をいつ行うべきか
を記述するために使用するための最も簡単なキーワード
を提供する。さらに複雑なシステムでは、順方向ストリ
ームのデータ要素のすべてまたはある部分が数学的な意
味で、逆のストリームのデータ要素のすべてまたはある
部分よりも大きいときにも「一致」が発生する。たとえ
ば、より多い、より少ない、ゼロ、範囲外など、どんな
数学演算でも使用することができる。マスクの下の比較
など通常のものと、一方のデータ要素中の真のバイナリ
・ビットの数が他方のデータ要素中の真のバイナリ・ビ
ットの数を超えた場合に一致を宣言することなど、特殊
なものとの両方を含め、どんな種類の論理演算でも使用
することができる。一般に、一致は、一方にある要素と
他方にある要素の間の特定の関係に関して試験する。当
業者なら、「一致」と呼ぶことができる条件の範囲を迅
速に拡張し、したがって次の処理を構想することができ
よう。
【0041】通常、上向きストリーム中のデータ要素を
下向きストリーム中のデータ要素と比較する目的は、そ
れらのデータ要素の一方または両方に応じ、あるいはそ
れに影響を与える何らかの動作が必要とされるかどう
か、あるいは許可されるかどうかを判定することであ
る。特定の動作は、一方または両方のデータ要素に存在
する特定のビット・パターンに応じるものでも、あるい
は2つの要素中のビット・パターン間の特定の関係の発
生に応じるものでもよい。そのような比較の結果として
何らかの動作が必要とされる場合、それを「一致」と呼
ぶ。
【0042】カウンタフロー計算パイプライン段内での
比較の結果として「一致」が見つかったとき、その段
は、どちらかまたは両方のデータ・ストリーム中のデー
タを修正することができる。多数の種類の修正が可能で
ある。特定の形の修正が本発明によって制限されること
はない。なぜなら、本発明はそのような修正をすべて含
み、あるいは修正をまったく含まないからである。特定
の形の修正は、現在の処理タスクのニーズに合うように
設計される。
【0043】一致があるときに実行すべき1つの簡単な
形の修正は、一方のデータ要素または各データ要素中の
1つのバイナリ・タグを真状態にすることである。その
ようにマーク付けされたデータ要素は、カウンタフロー
処理パイプラインを介した流れの終りに達したとき、特
殊な処理を受けるものとして選択することができる。一
致が発生したときに実行すべき他の簡単な形の修正は、
一方のデータ要素の指定の部分を他方のデータ要素の指
定の部分にコピーすることである。そのようなコピー動
作では、選択された情報が一方のデータ・ストリームか
ら他方のデータ・ストリームに移動することができる。
実行すべき他の形の修正は、パイプラインの次の段が一
方のデータ要素を無視し、あるいはデータ・ストリーム
から削除できるように、一致が発生したときに前記デー
タ要素の1つに無効のマークを付けることである。一致
があるときに実行すべき他の形の修正は、2つのストリ
ームのデータ要素に対する数学演算または論理演算を含
むことができる。当業者には、2つのデータ要素のすべ
てまたは一部に対して様々な演算が可能であることが明
らかになろう。
【0044】カウンタフロー計算パイプラインのどんな
段でも、他方のストリームのデータ要素を参照せずに、
一方または他方、あるいは両方のデータ・ストリームの
データ要素に対して通常のディジタル処理を実行できる
ことも構想される。ある段での計算の形は、他の段で行
われる計算の種類に類似するものでも、類似しないもの
でもよい。これに関しては、段が同じものである必要は
ない。たとえば、特定の段は順方向ストリームの各デー
タ要素の2つの部分を加算し、同じデータ要素の一部と
してその和を記録することができる。そのような動作
は、他方のストリームのデータ要素の存在に依存する必
要がなく、したがって、計算パイプラインで現在共通的
に行われている処理に類似している。他方のストリーム
の要素に無関係な一方のストリームの要素に対して実行
しなければならない特殊な動作があることがある。
【0045】いくつかのデータ処理動作は、「一致」が
あるときしか実行されない。そのような動作は、一致し
た2つのデータ要素の値に対する数学計算を含むことが
できる。これらの動作は、一方のデータ要素のデータの
他方のデータ要素への代入を含むことができる。これら
の動作は、適当な妥当性検査マーカ・ビットの状態を変
更することによって、一方または他方のデータ要素中の
データを有効化または無効化することを含むこともでき
る。当業者なら、非常に広範囲の可能なデータ処理動作
が可能であり、それらが異なるタスクに望ましいことを
理解されよう。
【0046】本発明の非常に有用な特徴は、完全で非冗
長な比較を保証できることである。「完全比較」とは、
上向きストリームからの特定のデータ要素が下向きスト
リームからのデータ要素を通過する場合、2つのデータ
要素がカウンタフロー計算パイプラインの少なくとも1
つの段を同時に占めて、比較が行われることを意味す
る。そのような2つのデータ要素は、相互に通過する際
に必ずある段で出会う。2つのデータ要素が共にカウン
タフロー計算パイプラインの同じ段を占めるとき、この
段は「一杯」(F)であり、2つの要素を比較すること
ができる。したがって、完全比較特性によって、一方の
ストリームのあらゆる要素は、それが通過する他方のス
トリームの各要素と少なくとも一度だけ比較される。
【0047】「非冗長比較」とは、順方向ストリームの
各データ要素が逆のストリームの各データ要素と多くて
一度だけ比較されることを意味する。本明細書で説明す
るカウンタフロー計算パイプラインは、すでに他方のス
トリームのデータ要素に出会った一方のストリームの各
データ要素が二度と前記他方のストリームのデータ要素
に出会わないようにすることができる。
【0048】カウンタフロー計算パイプラインの完全特
性と非冗長特性は協力して、一方のストリームの各デー
タ要素が一度だけ他方のストリームの各データ要素に出
会うようにすることができる。本明細書で説明するカウ
ンタフロー計算パイプラインの完全特性および非冗長特
性(「逆同期比較」)によって、このパイプラインは様
々な計算タスクに有用になる。
【0049】比較のためにカウンタフロー・パイプライ
ンに提供される制御回路は、相互に逆の方向に流れる2
つの別々のパイプラインと、カウンタフロー・パイプラ
インを区別する。相互に並行であるが逆の方向に流れる
2つの別々なパイプラインの場合、上向きに流れるデー
タ要素は、下向きに流れるデータ要素と共に同じ段を占
めることなしに、前記下向きに流れるデータ要素を通過
することがある。これが起こる可能性があるのは、2つ
のデータ要素が、隣接する段を占めており、次いで、一
瞬のうちに場所を交換する場合である。2つのデータ要
素は、互いを通過したが、実際に相互作用することはで
きない。カウンタフロー・パイプラインは、これが発生
するのを防ぐための特定の回路を含む。
【0050】2つのデータ・ストリームのどちらかまた
は両方から不要なデータ要素を削除できるようにする本
発明の拡張について以下で説明する。削除は、2つのデ
ータ・ストリームの要素間の比較によって一方または他
方のデータ・ストリームのデータ要素が古くなる場合に
有用である。削除は本発明の同期実施態様でも非同期実
施態様でも有効であるが、同期実施態様では「バブル」
を導入することができる。
【0051】2つのデータ要素のどちらかまたは両方に
新しいデータ要素を挿入できるようにする本発明の他の
拡張について以下で説明する。新しいデータ要素を一方
または他方のストリームに挿入することは、現在のデー
タ要素に対する計算が次の処理を必要とする新しいデー
タ要素を生成する場合に有用である。上向きストリーム
中のデータ要素に対して行われた計算に応答し、かつそ
の結果として下向きストリームにデータ要素を挿入する
ことがいくつかのアプリケーションで有用であることが
分かっている。基本パイプラインが対称的なものなの
で、もちろん、下向きストリームで発生した事象に応答
して上向きストリームにデータ要素を挿入することも可
能である。
【0052】本明細書で説明するカウンタフロー・パイ
プラインは、分岐構造として形成することができる。最
も簡単な形の分岐構造は簡単な分岐である。分岐よりも
下には単一のカウンタフロー・パイプラインしかない。
分岐よりも上には、右パイプラインおよび左パイプライ
ンと呼ばれる2つの別々なカウンタフロー・パイプライ
ンがある。このシステムはYの文字に類似している。当
業者なら、カウンタフロー・パイプラインの対称性のた
めに、どんな分岐構造または結合構造を可能にするに
も、そのような簡単な分岐の説明で十分であることを認
識されよう。上に2つのパイプラインがあり、下に単一
のパイプラインがある構造は、「Y」構造を上下逆にし
たものに過ぎない。当業者なら、2本よりも多い枝を含
む多方向枝および結合が可能であることを認識されよ
う。
【0053】分岐の下から上向きに流れるデータは、分
岐の何らかの規則に応じて左または右、あるいはその両
方へ送ることができる。そのような規則は、データ要素
自体の何らかの顕著な特性を使用してデータ要素を方向
付けることができる。たとえば、英語を表す要素を一方
のパイプラインに送り込み、フランス語を表す要素を他
方のパイプラインに送り込むことができる。2つの出力
パイプの代替使用、ランダム選択、どの出力パイプライ
ンがあまりビジーでないかに基づく選択、各パイプを介
した各要素の一部の送信の使用を含む他の規則も可能で
ある。
【0054】下向きに流れるストリームは分岐で出会
う。この場合も、どのようにこれら2つのストリームの
要素を単一のストリームとして組み合わせるかについて
選択しなければならない。当業者には明らかなように、
代替サービス、到着順に基づくサービス、データ内容に
基づくサービス、要素の対としての組合せ、相互のデー
タの連合を含む様々な規則が可能である。どんな特定の
分岐でも、それが上向きフローを分割するために使用す
る規則と、下向きフローを組み合わせるために使用する
規則によって特徴付けることができる。
【0055】大部分のパイプラインでは、各段を、上向
きバウンド・データ用の単一のレジスタと下向きバウン
ド・データ用の他のレジスタとを有するものとみなすと
好都合である。しかし、パイプラインの単一の段が、一
方または他方、あるいは両方の方向に進むデータ用の複
数のレジスタを有することも可能である。そのようなシ
ステムは、段に存在するいくつかの上向きバウンド・デ
ータ値をそれぞれ、各下向きバウンド値とうまく比較で
きるように、複数の比較が可能でなければならない。
【0056】パイプラインの特定の段は、パイプライン
の外部からの信号を受け入れることができる。そのよう
な信号は、時刻などの特殊データをパイプラインに送
り、あるいはパイプラインの動作を修正することができ
る。たとえば、特定の段は、特定の計算を行い、あるい
は特定のデータを送る前に何らかの外部事象を待つこと
ができる。そのような機構を使用して外部メモリ・シス
テムからデータを受け入れることは特に有用である。
【0057】同様に、パイプラインの特定の段は外部装
置に信号を送ることができる。したがって、パイプライ
ンの特定の段は、オペレータに特定の条件を警告するよ
うに豆電球やブザーなど何らかの物理装置を制御するこ
とができる。そのような機構を使用して外部メモリ・シ
ステムにデータおよびアドレスを送ることは特に有用で
ある。
【0058】パイプラインへのそのような外部接続を一
方の側の機能が非常に限られたパイプライン分岐とみな
すことができる。しかし、そのような各接続を特殊ケー
スとみなした方が簡単であることが多い。当業者なら、
本明細書で説明する制御システムが広範囲のそのような
外部装置を制御するように適応できることを認識されよ
う。
【0059】外部装置はパイプラインのいくつかの段に
接続することができる。たとえば、メモリ装置はパイプ
ラインの1つの段から命令を受け取り、答えを他の段に
送ることができる。鉄道の本線上の側線(待避線)に類
似しているため、そのような接続を本明細書では「側
線」と呼ぶ。
【0060】側線は、外部プロセスがメイン・パイプラ
インで、ある段から次の段へデータを移動するのにかか
る時間よりも長い時間を必要とするときに常に有用であ
る。側線は、データがメイン・パイプラインに沿って移
動している間にそのタスクを実行し、進行中のデータの
ニーズに一致するようにパイプライン中の適当な点で答
えを送る。たとえば、メモリ側線は、メモリ値を必要と
するデータ要素がメイン・パイプラインに沿って移動し
ている間に、必要とされる値を外部メモリで探す。同様
に、数学側線は、メイン・パイプラインで他の動作が実
行されている間に、何らかの難しい数学関数、たとえば
除算を計算することができる。そのようなメモリおよび
数学側線は、カウンタフロー・パイプラインの比較的高
い速度を多数の有用な計算動作のより低い速度に一致さ
せるための機能を提供する。
【0061】同期法および非同期法 本発明は、カウンタフロー計算パイプラインの同期実施
態様と非同期実施態様を共に包含する。同期実施態様で
は、データがパイプラインのある段から次の段へ移動す
る場合、「クロック」と呼ばれる外部タイミング信号が
到達したときだけそのように移動する。同期実施態様で
は、データはクロック信号間で静止したままである。同
期実施態様では、データを収容する空間が次の宛先にな
い場合も、データは静止したままである。同期実施態様
では、送信側段と受信側段が、場合に応じてデータを上
向きまたは下向きに送るためにどのクロック事象を使用
するかに関して合意する。
【0062】カウンタフロー計算パイプラインの非同期
実施態様では、送信側段と受信側段とが、データがどん
な外部クロック信号からも独立に段間で移動すべきであ
ることに合意すると必ず、データはそのように移動す
る。非同期実施態様では、順方向ストリームの各データ
要素は、そのデータ要素用の空間が次の段にでき、その
データ要素がもはやこの段では必要とされなくなり、か
つローカル回路が許可した直後に、順方向に自由に移動
する。逆のストリームの各データ要素は、そのデータ要
素用の空間が前の段にでき、ローカル回路が許可した直
後に、逆方向に自由に移動する。
【0063】本発明の非常に有用な態様は、本発明が、
データ移動の非同期ローカル制御または非クロック・ロ
ーカル制御と共に「逆同期比較」と呼ばれる完全非冗長
特性を提供できることである。
【0064】
【実施例】図1、図2、図3で、段20、30、または
40は上下に重ねられており、データは、このように形
成されたパイプラインを介して「上向き」または「下向
き」に流れる。この文脈での「上向き」および「下向
き」の語は、図中の方向だけを指し、実システム中の実
際のフロー方向に偶然類似しているに過ぎない。本発明
のこの説明全体にわたって、「上向き」および「下向
き」は単に、データ・フローの2つの方向の有用な区別
を提供するために使用される。
【0065】本発明は、順方向データ・フローおよび逆
方向データ・フローを提供するように2方向に通信する
1組の類似の段用の制御機構を設けている。最も一般的
な形の本発明のブロック図を図1に示す。図1に示した
ように、段N、段N−1、段N+1などのラベルの付け
られたデータ・パイプライン50のいくつかの段20が
ある。これらのデータ段はデータ経路22、24、26
によって2方向に通信する。場合によっては、上下方向
の通信は、24や26など別々の経路上のものでも、2
2で示したように可逆的に使用される単一の経路上のも
のでも、これらの構成を組み合わせたものでもよい。
【0066】これらの段用の制御システム52は、制御
システムと段を接続する制御経路28中の制御信号によ
って段と相互作用する。いくつかの制御信号は、制御シ
ステムから段へ流れ、段の動作を制御するように働く。
他の制御信号は、段の状態または段のデータ内容に関す
る情報を示すように段から制御システムに流れる。
【0067】図1の構成が図示のためのものに過ぎない
ことを認識されたい。図1に示したデータ経路のうちの
いくつかをなくすことができ、いくつかのデータ経路は
他のデータ経路よりも多くの情報を運ぶことができ、図
示していない特殊データ経路を含めることができる。本
発明は、当業者には明らかな多数のそのような変形例を
構想するものである。
【0068】制御システム52は段を介した規則正しい
データ・フローを提供する。データ要素は、段間で両方
向に流れることができ、別々の時に流れることも、ある
いは異なる段間で同時に流れることもできる。
【0069】制御システム52は、データ経路を介して
一方の方向に流れるデータと他方の方向に流れるデータ
との逆同期比較を行う。
【0070】他の形の本発明では、制御システムが段自
体に分散される。図2に示したように、パイプラインは
幅の広い矢印で示したデータ経路32および36を含む
1組の類似の段30と、それらの間を流れる、幅の狭い
矢印で示した制御経路34とで構成することができる。
図2では、上向きおよび下向きのデータ・フローのため
に別々のデータ経路が示されている。図3では、両方向
のデータ・フローのために共通データ経路42が使用さ
れている。図1、1B、1Cに示したように、20、3
0、または40として識別され、段N、段N−1、段N
+1などのラベルの付けられたパイプラインのいくつか
の段がある。
【0071】図2に示したように、段は、データ経路3
2によって上向きに、データ経路36によって下向きに
通信する。データ経路は、多数のデータ・ビットを平行
に運べることを示すように二重矢印で描かれている。上
向きストリーム用のデータ要素は、下部入力ポート31
で前記ストリームに入り、上部出口ポート33から出
る。下向きストリーム用のデータ要素は、上部入力ポー
ト35で前記ストリームに入り、下部出口ポート37か
ら出る。
【0072】図2に示したデータ通信経路に平行にかつ
この経路の他に制御経路34もある。この経路は、制御
信号が段の動作を制御するために各方向に流れることが
できることを示すように幅が狭い二重矢印で示されてい
る。二重矢印は、制御信号が上向きおよび下向き両方の
別々の経路を流れることを示すものである。制御経路
は、各制御がデータ通信経路で情報の規則正しいフロー
を提供できるように隣接する段に関する情報を各段中の
制御システムに示す。
【0073】後で、実施態様によっては、上向きおよび
下向きのデータ移動が異なる時に行われなければならな
いため、同じデータ経路を使用できることが分かる。場
合によっては、図3に示したように、上向き通信にも、
下向き通信にも、同じデータ経路42を使用することが
望ましい。この場合、上向きに流れるデータ要素にも、
下向きに流れるデータ要素にも、単一の双方向データ経
路42が使用される。制御経路44は段間で制御信号を
伝達する。
【0074】カウンタフロー計算パイプラインの単一の
段の構成要素を図4に示す。各段は、上向きデータ・ス
トリームのデータ要素を収容するためのメモリ要素、た
とえばレジスタ60と、下向きデータ・ストリームのデ
ータ要素を収容するための第2のレジスタ66とを備え
ている。レジスタ60および66はそれぞれ、各段をそ
れに隣接する段に接続するデータ通信経路32および3
6に接続されている。データ要素は、これらの通信経路
に沿ってある段中のレジスタから隣接する段中のレジス
タに流れる。レジスタ60および66のサイズの差によ
って示唆されるように、2つのレジスタは、同じ量の情
報を保持する必要も、同じ数のビットを保持する必要も
ない。
【0075】単一の段中の各レジスタは、データ要素を
含むことができ、あるいは空であってもよい。図4で構
想される実施例では、各レジスタ用のマーカ・フリップ
・フロップ62および64が、レジスタが一杯である
か、それとも空であるかを示すために使用されている。
マーカ・フリップ・フロップ62は、1または0にセッ
トされた場合、それぞれ、上向きレジスタ60中にデー
タ要素があること、あるいはないことを示す。マーカ・
フリップ・フロップ64は、1または0にセットされた
場合、それぞれ、下向きレジスタ66中にデータ要素が
あること、あるいはないことを示す。
【0076】これら2つのマーカ・フリップ・フロップ
の状態は協力して、段の4つの異なる状態を示す。この
うちで最も容易に挙げられるのは、それぞれ、2つのマ
ーカ・ビットが共に1に、あるは0にセットされること
によって示される「一杯」(F)および「空」(E)で
ある。他の2つの状態は、単一のデータ要素だけが存在
するとき、すなわち、段が「半分充填されている」とき
に発生し、下向きに移動するデータ要素が存在するか、
それとも上向きに移動するデータが存在するかに応じて
それぞれ(D)および(U)と呼ばれる。
【0077】カウンタフロー計算パイプラインの実施例
によっては、レジスタ60および66の空状態および一
杯状態をそれぞれマーカ・フリップ・フロップ62およ
び64以外の機構で判定することができる。たとえば、
米国特許第4837740号に記載されたように、非同
期システムでは、レジスタの一杯状態または空状態を示
す信号をレジスタの2つの制御信号の排他的論理和とし
て導くことができる。この形のマーカはカウンタフロー
計算パイプラインで使用することもできる。
【0078】各段中の制御回路68はレジスタ60およ
び66と、フリップ・フロップ62および64とに接続
されている。カウンタフロー計算パイプラインの各段
は、図5に示した比較回路を含むこともできる。この図
で、図4の上向きレジスタ60は2つの部分60aおよ
び60bに分割され、図4の下向きレジスタ66は2つ
の部分66aおよび66bに分割されている。各レジス
タの一方または両方の部分では、通信経路入力または比
較計算ブロック72からデータを取れるように、マルチ
プレクサ70および76が入力に接続されている。レジ
スタ、マルチプレクサ、および外部制御信号はすべて、
制御回路68によって管理される。大部分のアプリケー
ションでは、あらゆる段が、カウンタフロー・パイプラ
インに対して可能な「逆同期比較」特性を提供するため
に少なくとも最小比較回路を含む。
【0079】図5に示したように、比較計算ブロック7
2の一部である比較回路は、上向きレジスタ60の一部
60aを下向きレジスタ66の一部66aと比較するこ
とができる。もちろん、比較は、必要に応じて、これよ
り多い、または少ない量を包含することも、あるいは場
合によってはどちらかのレジスタのすべてを包含するこ
ともできる。図5で特定の部分を示したのは図示のため
に過ぎない。図5で、このような比較回路は、それぞれ
データ経路71および77に沿って提供される各レジス
タ中の情報の約半分に作用するものとして示されてい
る。しかし、本発明の様々な実施例で、このような回路
は、現在の計算タスクに応じてレジスタで利用可能なデ
ータのいくらかを利用することができる。
【0080】比較計算ブロック72中の比較回路は、何
らかの数学比較または論理比較を実行し、1つまたは複
数の「一致」条件を検出することができる。これらの一
致条件は制御経路76に沿って制御回路に報告される。
これらの一致条件は、2つのレジスタ内の何らかのデー
タ・フィールドのビットごとの比較に基づいて計算する
ことができる。たとえば、上向きバウンドの英語の第1
文字が下向きバウンド英語の第1文字に一致した場合に
一致を宣言することができる。一方のレジスタの何らか
のフィールドの数学値が他方のレジスタ中のフィールド
の値を超えた場合に一致を宣言することもできる。当業
者には、異なる目的のために検出できる様々な「一致」
条件が認識されよう。
【0081】異なる目的のために複数の一致条件をもつ
ことも可能であり、時には有用である。ある種の一致で
は、上向きバウンド・データ要素が修正され、他の種類
の一致では、下向きバウンド・データ要素が修正され
る。修正の量および種類は、検出された特定の種類の
「一致」によって制御することができる。
【0082】このような一致条件の制御下で、レジスタ
の内容を修正するための回路を活動させる。図5で、こ
のような修正回路は比較計算ブロック72からのデータ
出力を含む。このブロックからの出力データは、その入
力のどんな計算可能な関数でもよい。したがって、デー
タ経路75に沿って上向きバウンド・データ経路中のマ
ルチプレクサ70に送られる値は、上向きレジスタだけ
のデータ値または下向きレジスタだけのデータ値の任意
の組合せでも、あるいは両方のレジスタのデータ値の何
らかの組合せでもよい。同様に、データ経路73に沿っ
て下向きバウンド・データ経路中のマルチプレクサ76
に送られる値は、上向きレジスタだけのデータ値または
下向きレジスタだけのデータ値の任意の組合せでも、あ
るいは両方のレジスタのデータ値の何らかの組合せでも
よい。
【0083】具体的には、図5に示した修正回路は、一
方のレジスタから他方のレジスタのすべてまたは一部に
データをコピーできる可能性を含む。マルチプレクサ7
0が上向きバウンド・レジスタ60の一部60aにしか
信号を供給しないことは、実際の回路をそのように制限
するものではない。当業者なら、そのようなレジスタの
固定部分60bおよびマルチプレクサによって供給され
る部分60aの相対サイズが、特定のアプリケーション
のニーズを満たすように任意に選択できることを直ちに
認識されよう。同様に、図5で、上向きバウンド・レジ
スタの同じ部分60aがデータ比較計算回路72への入
力としても、修正すべき部分としても使用されているよ
うに見えるが、これは実際の設計を制限するためのもの
ではない。当業者なら、上向きバウンド・レジスタ60
のどんな部分でもデータ計算比較回路への入力として使
用でき、レジスタ60の他のどんな部分でもマルチプレ
クサに接続でき、これら2つの部分を重ね合わせる場
合、どんな所望の方法ででもそれを行えることを認識さ
れよう。
【0084】図5に示した修正回路は、1つのレジスタ
だけの内容に対して実行できる様々な特殊動作を表す。
図5の回路は、2つのレジスタの内容を組み合わせ、そ
の結果それらの一方または両方を修正する回路も表す。
当業者なら、そのような修正回路がいくつでもカウンタ
フロー処理パイプラインに含められることを直ちに認識
されよう。図示したものは、使用できる様々な可能な計
算構成を示すためのものに過ぎない。
【0085】カウンタフロー計算パイプラインの段の動
作は制御システムによって制御される。この制御システ
ムは、図4および図5中に68として示したように、パ
イプラインの特定の段に対してローカルであってよい。
【0086】基本カウンタフロー計算パイプラインに好
ましい制御システムは、図6を参照すると最もよく理解
することができる。この状態図中の5つの円は、カウン
タフロー計算パイプラインの単一の段が使用中に通過で
きる5つの主な状態を表す。これらの主な状態のうち
で、4つ、すなわち(F)、(E)、(D)、(U)に
ついてはすでに述べた。これらの名前は完全に任意のも
のである。もちろん、使用した特定の名前は本発明の動
作とは無関係である。
【0087】図6の矢印は、説明中の単一の段の基本状
態の可能な変化を表す。したがって、たとえば、「ge
t up」のラベルが付けられた矢印で示した新しい上
向きバウンド・データ要素が到着すると、状態は(E)
から(U)に、あるいは(D)から(F)に変化するこ
とができる。同様に、「get down」のラベルが
付けられた矢印で示した新しい下向きバウンド・データ
要素が到着すると、状態は(E)から(D)に、あるい
は(U)から(F)に変化することができる。同様に、
「pass up」のラベルが付けられた矢印で示した
上向きバウンド・データ要素が離れると、状態は(U)
から(E)に変化することができる。同様に、「pas
s down」のラベルが付けられた矢印で示した下向
きバウンド・データ要素が離れると、状態は(D)から
(E)に変化することができる。
【0088】図6に示した状態間の遷移については一部
を上記で説明した。下記は到着するデータの完全な説明
である。空(E)のとき、カウンタフロー計算パイプラ
インの各段は、どちらかのデータ・ストリームからデー
タ要素を得ることができる。したがって、図6で空
(E)状態になる状態遷移は2つある。これらは以下の
とおりである。1)段は、上向きデータ要素を得た場合
は状態(U)に入る。2)段は、下向きデータ要素を得
た場合は状態(D)に入る。図に示したように、段は、
(D)状態から、上向きに流れるデータ要素を引き続き
得て一杯(F)になることができ、同様に、(U)状態
から、下向きに流れるデータ要素を引き続き得て同様に
一杯(F)になることができることに留意されたい。空
状態から、上向きに流れるデータ要素と下向きに流れる
データ要素が同時に到着し、したがってシステムが状態
(E)から直接状態(F)に移動する可能性もある。こ
の可能性は、その動作が2つのデータ要素が別々に到着
することによって包摂されるので、図では、点線として
示されている。図6は、段が一杯(F)にならない限
り、まだ占められていないどちらかまたは両方のレジス
タにデータ要素を受け入れることができることを忠実に
報告している。
【0089】データ要素が段から離れることはさらに制
限される。図6で状態(F)からは(C)以外のどの状
態に至る矢印もない。したがって、下向きに流れるデー
タ値しか含まない場合、段は状態(D)であり、その要
素データを送って状態(E)に移る。同様に、段は上向
きに流れるデータ値しか含まない場合、状態(U)であ
り、そのデータ要素を送って状態(E)に移る。両方の
データ要素を有する場合、段は状態(F)であるが、比
較が完了して状態(C)になるまでどちらのデータ要素
も送ることができない。図6の状態図は、段が状態
(F)に達した後、状態(C)に達するまで、データ要
素が離れることを禁止されることを示す。
【0090】パイプラインの適切な機能を理解するに
は、「Complete」を表す(C)と呼ばれる図6
の状態図の第5の状態を理解する必要がある。
【0091】状態図の状態(F)から状態(C)への遷
移は、2つのデータ要素に対する比較動作を含む。状態
(F)に達すると、同時に両方のデータ要素が存在し、
それらを比較しなければならない。比較が完了して、
「一致」条件のどれかによって必要とされるあらゆる動
作が完了すると、システムはCompleteの場合と
同様に状態(C)に達したと言われ、データ要素は自由
に離れることができる。本発明の好ましい実施例はこれ
らの状態遷移を忠実に実施する。これらの状態遷移をう
まく実施すると、カウンタフロー・パイプラインのある
種のアプリケーションで非常に有用な「逆同期比較」と
呼ばれる完全非冗長比較特性が得られる。
【0092】カウンタフロー計算パイプラインの段がど
の状態を占めるかは3つのフリップ・フロップによって
示すことができ、そのうちの2つは図4に示されてい
る。図4に示した2つのマーカ・ビット62、64は、
2つのレジスタが占有されているかどうかを示すことが
できる。Complete状態(C)に到達したかどう
かを報告するには第3のインディケータが必要である。
段の状態を示すために使用できる多数の機構がある。た
とえば、本発明の非同期実施例では、後述するように、
いくつかの制御信号から状態を導くことができる。当業
者なら、5つの基本状態を区別するための多数の多様な
機構を認識されよう。さらに、後で分かるように、5つ
の基本状態はそれぞれ、さらに多数の二次状態に分割す
ることができる。カウンタフロー計算パイプラインのあ
る種のアプリケーションに重要なことは、これら5つの
基本状態が異なるものであり、かつカウンタフロー・パ
イプラインが「逆同期比較」特性を提供できるように、
それらの状態間の遷移が図6に示した特性を有すること
である。
【0093】図6の状態図に示した規則に従ってデータ
を規則正しく送るために、カウンタフロー計算パイプラ
インの各段ごとの制御システム中に、あるいは段間に特
殊回路を含めることができる。図6の状態図がより簡単
なものである場合、データの上向きフローおよび下向き
フロー用の別々の制御を使用することができる。しか
し、図6の状態図では、各段は、一杯になった後、デー
タをどちらかの方向に送る前に、一致または比較と、そ
れに伴うデータ修正動作とを完了しておかなければなら
ない。当業者なら、多数のそのような制御回路を構想す
ることができる。それらのうちの2つを以下で説明す
る。そのうちの1つは同期実施例用のものであり、1つ
は非同期実施例用のものである。
【0094】同期制御 段間の通信に特定の焦点が当てられた図7に同期形の制
御を示す。各段は、図に示した発信回路80および82
を使用して隣接する段にそれ自体の存在を通知する。こ
れらの発信回路はそれぞれ、スラッシュと、報告中の段
階の状態を完全に説明するには3ビットの情報を提供す
ることが好ましいことを示すための数字「3」でマーク
付けされている。クロック78によって提供されるクロ
ック・パルス間の間隔中に、各段は、それ自体とそれに
隣接する段の間にある通信経路でデータが移動すべきか
どうかを判定し、データが移動すべきである場合に、転
送が上向きであるべきか、それとも下向きであるべきか
を判定するのに必要なすべての情報を有する。2つの隣
接する段のそれぞれには、可能な5つの状態の積に対応
する25のケースしかない。2つの段の組合わされた状
態は、それらの別々の状態を表し、下の段の状態を最初
に記録する、2つの文字で指定される。したがって、た
とえば(E、D)は、下の段が空であり、上の段が下向
きバウンド・データを有することを意味する。
【0095】これらの25の可能な状態対のうちで、上
向きデータ・フローが可能なのは状態対(U、E)、
(C、E)、(U、D)、および(C、D)だけであ
る。上の段中の下向きバウンド・データと、下の段中の
利用可能な上向きバウンド・データ用の空間を有するの
はこれらの状態だけでなので、上向きフローが可能なの
はこれらの状態だけである。同様に、下向きデータ転送
が可能なのは状態対(E、D)、(E、C)、(U、
D)、および(U、C)だけである。状態対(U、D)
では、上向きまたは下向きデータ転送が可能であるが、
一方のデータ移動または他方のデータ移動を選択しなけ
ればならない。両方のデータ移動を同時に可能にする
と、上向きバウンド・データ要素と下向きバウンド・デ
ータ要素は場所を交換し、どちらかの段で比較されるこ
となしに進むおそれがある。これは、パイプラインが完
全比較を行うことを妨げ、したがって「逆同期比較」特
性を破壊する。
【0096】次いで、同期制御は、隣接する段の組合わ
された状態に基づいてデータをいつ移動するかを決定す
ることができる。ケース(U、D)では、両方の段が同
じ決定を下さなければならない。その決定が、常にデー
タを上向きに送るか、常にデータを下向きに送るか、ま
たはそれらを交互に選択するか、あるいは他の何らかの
規則に従うかである制御を設計することができる。両方
の段が規則に合意する限り、どんな規則でも機能する。
【0097】非同期制御 本発明の非同期実施例はいくぶんさらに複雑である。基
本的な違いは、図6の状態図に固有のものである。段は
状態(D)から下向きにデータを送ることができるが、
上向きデータ要素が到着した後、それによって段は状態
(F)になり、もはや下向きバウンド・データを送るこ
とができなくなる。したがって、制御システムは、他の
データ経路で他のデータ要素が非同期的に到着したとき
にあるデータ要素を送るのが妥当かどうかを明確に決定
する準備をしなければならない。この決定は、段に隣接
する通信経路を下向きバウンド方向に使用すべきか、そ
れとも上向きバウンド方向に使用すべきかに関する決定
である。
【0098】この必要を理解すると、必要とされる制御
を理解するのがより簡単になる。必要とされる決定を下
す1つの方法は、上向きバウンド・データと下向きバウ
ンド・データとが衝突した場合に明確な答えを提供する
ための各通信経路をもつアービタ回路を置くことであ
る。そのような衝突は(U、D)状態、すなわち、同期
制御の場合と同様に、下の段が上向きに通信することが
でき、上の段が下向きに通信することができるときに発
生する。しかし、非同期システムは、優先順位またはサ
ービス順序だけに基づいてデータをどの方向に移動する
かを決定することはできない。最近データがまったく通
過しておらず、その場合に、上向きバウンド通信および
下向きバウンド通信を求める要求が突然、ほとんど同じ
瞬間に到着することがあるので、この決定はより複雑で
ある。
【0099】非同期システムの当業者は、ほとんど同時
に到着した互いに衝突する要求は慎重に扱わなければな
らないことをよく理解している。この種の衝突に対処す
るアービタ回路は当技術分野で周知である。適切なアー
ビタ回路は、Charles L. Seitz著の「Ideas about Arbi
ters」(雑誌、Lambda、1980年第1四半期)または
米国特許第4398105号に記載されている。
【0100】図8は、好ましい非同期設計のシステム・
ブロック図を示す。信号がどちらの方向に流れるべきか
に関するあらゆる衝突を解決するためのアービタを組み
込んだ「COP」89が各段対の間にある。段は、制御
経路84および85に沿ってその希望をCOPを示す。
これらの制御経路は、スラッシュと、図6の状態に対応
して少なくとも3つの状態ビットを示さなければならな
いことを示すための数字3とでマーク付けされている。
COPは、アービタを使用して段間のデータの流れを方
向付け、次に上向き通信経路32を使用すべきか、それ
とも下向き通信経路36を使用すべきかを、通信経路8
6および88を介して各段に通知する。COPは実際の
データ・フローに参加する必要がなく、単に、データを
上向きまたは下向きに移動する許可を隣接する段に与え
る。送信側と受信側はデータ経路32および36を使用
してデータを伝達し、受信側と送信側の間には、データ
・フローの細部を制御するためのあらゆる制御経路が必
要である。図8では、上向きデータ・フローと下向きデ
ータ・フローの間の決定を下すのに必要とされる制御経
路しか図示されていない。選択されたデータ経路32ま
たは36に沿ってデータ・フローを制御するには、図示
していない追加制御経路が必要である。
【0101】制御システムの一実施例はCOPとの間で
以下の信号を使用する。これらの信号は、前記で引用し
た論文Micropipelinesに記載された事象
信号であり、図13に見ることができる。 下向き制御経路84で: AU? 自分が、上向きに流れるデータ要素を受け入れ
ることができる。 PD? 自分が、下向きに流れるデータ要素を送ること
ができる。 CD 自分の制御システムは他の通信の準備ができて
いる。 上向き制御経路85で: PU? 自分が、上向きに流れるデータ要素を送ること
ができる。 AD? 自分が、下向きに流れるデータ要素を受け入れ
ることができる。 CU 自分の制御システムは他の通信の準備ができて
いる。 COPからの出力: GU! 相手が、上向きに通信することができる(制御
線86) GD! 相手が、下向きに通信することができる(制御
線88)
【0102】名前に「?」が含む信号と、CD信号およ
びCU信号とは、2つの段が通信する準備ができている
ことをCOPに示す。COPは、どちらの方向に通信を
行うかを決定し、名前に「!」を含む信号によって、ど
うすべきかを2つの段に通知する。これらの信号の制御
下で段はその動作をうまく実行することができる。
【0103】当業者なら、そのような設計で様々な通信
プロトコルおよび機構が可能であることを認識されよ
う。たとえば、米国特許第4837740号で構想され
たようにデータの通信は簡単な制御「事象」を伴うこと
ができる。「四相」制御システムを使用することもでき
る。図8は上向きに流れるデータと下向きに流れるデー
タ用の別々のデータ経路を示すが、データは一度に1つ
の方向にしか流れないので、共通の1組の可逆ワイヤを
この通信のために共用することができる。同様に、通信
は、順次通信として一度に1ビットずつ、あるいはバイ
ト単位で、各部分ごとに行うこともできる。そのような
順次化または部分順次化は、必要とされるデータ・ワイ
ヤの数を減らすために選択できるが、もちろん、それに
よって通信は低速になる。
【0104】システムは、完全状態(C)に達する前に
データ要素が離れるのを妨げることが好ましい。この制
限は、追加完了信号または「自由」信号をCOPに提供
することによって適応させる。COPは、2つの段が共
に他の通信事象の準備ができていることを宣言した場合
だけ通信する許可を与える。図8に示した制御経路84
および85の一部であるCD信号およびCU信号は、こ
の情報をCOPに提供する。COPは、「?」信号を適
当に組み合わせることによって要求されたときだけ、お
よびCOP自体が受信したCD信号およびCU信号が、
両方の段が他の通信動作の準備ができていることを示す
ときだけ、データが通過できるようにする。
【0105】COPの動作 図8のCOPは、アービタを使用して実施することがで
きる。次に、アービタの動作について説明する。図9
は、使用できるアービタの状態図である。1ないし8と
呼ばれる8つの状態がある。これらの状態の間に、R
1、R2、G1、G2、Cと呼ばれる16個の遷移があ
る。アービタの動作は以下のとおりである。アービタ
は、いつでも、あるいは場合によっては、まったく同時
に到着できる要求信号R1およびR2に応答して、サー
ビスを1回だけ許可する。アービタはG1出力またはG
2出力(両方のことはない)上で信号を送ることによっ
て、サービスを許可したことを示す。要求が衝突する1
つのケースでは、状態4を離れ、G1信号を生成する
か、それともG2信号を生成するかを決定するのに調停
が必要とされる。当業者に周知の特殊回路は、そのよう
な決定を明確に下し、不安定状態が終わるまで決定の発
表を延期することによって不安定状態によって引き起こ
される不確実性をなくす。
【0106】図10は、この形のアービタをどうしたら
COP回路89に含めることができるかを示す。3つの
Muller C要素92、94、96は図のように着
信制御信号を組み合わせる。Muller C要素92
は、AU?信号とPU?信号を組み合わせてアービタへ
のR1要求を形成する。この組合せは、アービタが許可
すればデータが上向きに流れることができることを示
す。同様に、Muller C要素96は、AD?信号
とPD?信号を組み合わせてアービタへのR2要求を形
成する。この組合せは、アービタが許可すればデータが
下向きに流れることができることを示す。これら2つの
Muller C要素の入力上のバブルは、最初、パイ
プラインが完全に空のときに、あらゆる段がデータ入力
を受け入れる準備ができていることを示す。
【0107】Muller C要素94は、CD信号と
CU信号を組み合わせてアービタ用のC信号を提供す
る。この組合せは、両方の段が他の通信事象の準備がで
きていることをアービタに示す。
【0108】段内の非同期制御 段内の簡単な形の非同期制御を図11に示す。この図
で、上向きバウンド・レジスタUREG60および下向
きバウンド・レジスタ66は、米国特許第518780
0号に記載された遷移制御レジスタとして実施される。
そのようなレジスタは、2つの制御入力上の事象によっ
て制御される。図11のレジスタ60および66では、
これら2つの入力が区別されている。なぜなら、それら
の一方がボックスの辺から入り、他方が隅から入るから
である。ボックスの辺から事象が入ると、レジスタはそ
の時にそれ自体を通過しているあらゆるデータを取り込
む。データが取り込まれると、ボックスの遠い辺で事象
出力が生成される。したがって、たとえば、図11の左
下にあるAU!入力上に事象が着信すると、UREGは
1)Uinデータ入力で提示されるデータを取り込み、
したがってUinの値の以後の変化がUout出力での
データ出力に影響を及ぼすのを防ぎ、2)次いでPU!
出力制御経路上で出力を生成する。
【0109】ボックスの隅に入るように示した制御入力
上の事象によって、レジスタはデータに対する保持を解
放して透過的になる。したがって、たとえば図11の左
上にあるPU!入力に入力事象が到着すると、UREG
60は透過的になり、続いてUinデータ入力からUo
utデータ出力へデータをコピーする。
【0110】図11に示した制御信号の動作の理解を助
けるために、事象発信の重要な特性を簡単に検討する。
この要約は参考文献では拡張された形で与えらえれてい
る。この形の発信では、ワイヤの電気状態の変化が事象
を発信するが、変化の方向は、HIからLOでも、LO
からHIでも良く、重要ではない。図11で101など
の円として表された通常の排他的論理和ゲートXOR
は、この形の発信用の「OR」機能を提供する。という
のは、XOR回路が、どちらかの入力のあらゆる状態に
対して、その出力状態を変更するからである。図11の
図を読む際に、円として描かれたXORのどちらかの入
力に到着した事象が直ちに出力に送られることを想起す
ると有用である。
【0111】102などのMuller C要素は事象
用のAND機能を提供する。Muller C要素の出
力状態は、両方の入力がHIになったときだけHIに変
化し、両方の入力がLOになった後だけ再びLOに変化
する。1つの入力がHIであり、他方の入力がLOであ
る場合、Muller C要素はその前の状態を想起し
て保持する。したがって、事象がMuller C要素
から出力されるには、第1の入力上の事象入力と第2の
入力上の事象入力が共に必要である。図11の図を読む
際に、Muller C要素102からの出力事象に
は、前記要素の2つの入力端子のそれぞれの入力事象、
すなわち、2つのXOR要素101および103の出力
としての入力事象が必要であることを想起すると有用で
ある。
【0112】第3のタイプの事象制御装置のセレクタ1
07を図11に示す。この装置は、下部端子上で受け取
る入力の値に応じて、左側の入力端子から、「t」およ
び「f」と呼ばれる2つの右側の端子のうちの1つへ入
力事象を送る。この機能を実行するのに適した回路は当
業者に周知である。セレクタ107は、MullerC
要素102から事象を得ると、XXと呼ばれるワイヤに
接続されたt出力、またはYYと呼ばれるワイヤに接続
されたf出力上で出力事象を生成する。セレクタがどち
らの出力を選択するかは、「register is full」と呼ば
れる信号が真であるか、それとも偽であるかに依存す
る。この信号はUREGにデータが存在するかどうかを
報告するように生成される。
【0113】次に、図11の制御回路の動作について説
明する。この段よりも下のCOPによって通信が1方向
にしかできないことを想起されたい。選択された方向
は、図13に関して説明するように、図11の回路への
AU!入力またはPD!入力によって、この制御回路に
示される。したがって、下の段との各通信ごとに、2つ
の入力AU!およびPD!のうちの1つしか到着しな
い。XOR回路103は、その出力が、下の通信経路で
通信が行われたことを示すように、これらの事象を組み
合わせる。同様に、この段よりも上のCOPの動作のた
めに、2つの入力事象PU!およびAD!のうちの1つ
しか発生することができない。したがって、XOR回路
101がこれらの事象を組み合わせるので、この回路の
出力は、上の通信経路上で通信が行われたことを示す。
したがって、Muller C要素102からの出力事
象は、上の通信事象と下の通信事象が共に発生したこと
を示す。
【0114】空(E)状態から始まる図11に示した段
が与えられている場合、MUller C要素の出力は
段の状態に関する多量の情報を提供する。具体的には、
MUller C要素出力が、この段よりも上と下の両
方で通信が行われたことを示すので、段は状態(E)ま
たは状態(F)でなければならない。段は、以下の3つ
の状況では状態(E)になる。1)以前に状態(E)で
あり、上向きデータ要素が下および左上から到着した。
2)以前に状態(E)であり、下向きデータ要素が上お
よび左下から到着した。3)以前に状態C)であり、両
方のデータが、1つは上向きに、1つは下向きに離れ
た。段は、以下の3つの状況では状態(F)になる。
4)以前に状態(E)であり、上向きデータ要素と下向
きデータ要素が共に、一方は上から、他方は下から到着
した。5)以前に状態(F)であり、上向きデータ要素
が離れ、他のものと置換された。6)以前に状態F)で
あり、下向きデータ要素が離れ、他のものと置換され
た。
【0115】セレクタ107は、一杯状態(F)に対応
するものと空状態(E)に対応するものとにMulle
r C要素102の出力事象を分離する。YYと呼ばれ
るワイヤ上の事象は空状態に達したことに対応し、XX
と呼ばれるワイヤ上の事象は一杯状態に達したことに対
応する。一杯状態に達したときは常に、段は図5で説明
したCOMPのラベルが付けられたlozenge 1
05によって示される一致計算プロセスを実行すべきで
ある。このプロセスは黒い線で示したように、両方のレ
ジスタからのデータを使用する。COMPプロセスが終
了するとき、段は完全状態(C)に達している。COM
P lozenge 105の制御出力は、CU信号お
よびCD信号を生成するXOR回路106に接続されて
いる。これらの信号は、段が次の通信事象の準備ができ
ていることを報告する。
【0116】分岐 図12は、分岐するカウンタフロー・パイプラインのブ
ロック図である。パイプラインの段Nの真上に分岐点が
ある。図2のように以前に段Nよりも上の位置を占めて
いた段N+1の場所に、この場合は、N+1(A)およ
びN+1(B)の2つのそのような段があることに留意
されたい。
【0117】分岐点では、上向きデータ経路、下向きデ
ータ経路、および制御経路の修正が必要である。分岐点
で、それよりも上の2つのパイプラインで上向きデータ
・フロー経路を供給するように上向きデータ・フロー経
路114が分割する。分岐点で、2つの下向きデータ・
フロー経路36Aおよび36Bは、いくつかの方法のう
ちの1つで組み合わせられる。図12には、マルチプレ
クサ110を使用して単一の下向きデータ・フロー経路
36を分岐点よりも下に供給することを示した。しか
し、36Aおよび36Bからのデータが、1)加算、
2)連結、3)ブール結合、4)図12に示した選択を
含むが、これらに限らない任意の論理的な方法で組み合
わせることができることを認識されたい。
【0118】分岐点よりも上および下からの制御信号
は、前記点よりも上および下にある段の動作を制御する
制御ブロック112で組み合わせられる。
【0119】分岐点では異なる制御回路が異なる動作を
生成する。特定の制御回路を特徴付けるには、前記制御
回路が上向きバウンド・データおよび下向きバウンド・
データをどのように扱うかを検討しなければならない。
従来、上向きバウンド・データを交互に2つの上向きバ
ウンド経路に方向付けること、上向きバウンド・データ
を両方の経路に方向付けること、データ自体の何らかの
特性に応じて上向きバウンド・データを一方または他方
の経路に方向付けること、上向きバウンド・データを自
由に受け入れるどちらかの経路に前記データを方向付け
ることを含むいくつかの可能な変形例が議論されてい
る。非同期実施態様では、この最後の方法では調停が必
要である。
【0120】下向きフローを組み合わせることはわずか
にさらに複雑にである。非同期実施態様では、上からの
データを組み合わせる大部分の形態で調停が必要であ
る。調停を必要としない1つの形態は、両方の下向きバ
ウンド経路からのデータ要素を単一のより大きな下向き
バウンド・パッケージとして組み合わせて、段N+1
(A)からも段N+1(B)からもデータが利用可能に
なるまで待機する。他の方法は、データを交互に、ある
いは到着順に組み合わせる。当業者なら、様々な組合せ
手法のどれでも可能であることを直ちに理解されよう。
【0121】大部分のパイプラインでは、上向きバウン
ド・データ用の単一のレジスタと下向きバウンド・デー
タ用の他のレジスタとを有するものと各段をみなすと好
都合である。しかし、パイプラインの単一の段が、1方
向または他方向、あるいは両方向に進むデータ用の複数
のレジスタを有することも可能である。そのようなシス
テムは、段中に存在するいくつかの上向きバウンド・デ
ータ値をそれぞれ、各下向きバウンド値とうまく比較で
きるように、複数の比較ができなければならない。
【0122】本明細書で説明するカウンタフロー・パイ
プラインはいろいらな方法が利用できる。このうちの特
定の1つは、本出願と同じ日に出願され、本出願人に譲
渡され、引用によって本明細書に合体された「Counterf
low Pipeline Processor」と題する関連特許出願に記載
されている。本明細書で説明するカウンタフロー・パイ
プラインを使用できる他の応用例は、テキスト比較エン
ジン、信号プロセッサ、コンボルーション・エンジン、
アソシエーティブ・メモリ、インベントリ参照エンジ
ン、遺伝子一致やタンパク質構造分析などの微生物アプ
リケーションを含むがこれらに限らない。
【0123】好ましい具体例 レジスタ カウンタフロー・パイプラインの好ましい実施例は、す
でに図11に示したデータ経路構成を使用する。2つの
事象制御レジスタ60および66は、上向きバウンド・
データ要素および下向きバウンド・データ要素を保持す
るように働く。これらのレジスタは、図示し、かつ前述
した事象信号によって制御される。
【0124】比較回路 カウンタフロー・パイプラインの好ましい実施例は、す
でに図5で一般的な語で説明した比較を使用する。装置
の一実施例では、32ビットの各データ要素は、8ビッ
トのレジスタ番号またはアドレスを伴う。このようなレ
ジスタ番号は比較回路によって比較され、一致が検出さ
れた場合、レジスタ値に対して様々な動作が実行され
る。具体的には、一方のデータ経路から他方のデータ経
路へレジスタ値をコピーすることも、続いてストリーム
から削除できるようにレジスタ値にマーク付けすること
もできる。
【0125】非同期通信経路 カウンタフロー計算パイプラインの非同期実施例用の段
間のインタフェース機構は特に簡単なものである。この
機構は、ある段から次の段へデータを送る動作が自動的
に行われると仮定する。図8中のCOPは、GU!信号
とGD!信号が共にCOPよりも上の段と下の段とに進
むことによって示したように、通信が可能であることを
送信側装置と受信側装置の両方に通知する。
【0126】実際は、非同期通信における送信側と受信
側自体に通信のタイミングを制御させるのがよい。した
がって、カウンタフロー・パイプラインの好ましい実施
例は、図13に示した発信経路を使用する。信号経路G
U!およびGD!は、送信側装置が通信チャネルへのア
クセスを許可されたことを前記送信側装置に通知するた
めにCOPによって使用される。実際の通信の制御で
は、発信経路PU!およびAU!を使用して上向きデー
タ・フローを制御し、PD!およびAD!を使用して下
向きデータ・フローを制御する。点線で示したように、
送信側装置はGU!信号またはGD!信号からそれぞれ
AU!信号またはAD!信号を生成する。したがって、
図13に示した接続によって導かれる動作は、図8に関
して前述した機能を実行するが、図13に示した接続は
実際の通信機能を規則正しく完了する。
【0127】図13の構成は追加利点を有する。図3で
構想されたように、上向き通信経路と下向き通信経路の
間のデータ経路ワイヤを共用する必要がある場合、下の
段はGU!信号を許可として使用してデータを前記経路
の共通のワイヤ上に置き、適当な遅延の後に、AU!信
号を発行することができる。同様に、上の段はGD!信
号を許可として使用してデータを前記経路の共通のワイ
ヤ上に置き、適当な遅延の後に、AD!信号を発行する
ことができる。、
【0128】当業者なら、機能が類似している他のイン
タフェースをどのように作成したらよいかを認識されよ
う。たとえば、さらに複雑な通信プロトコルを使用し
て、データ要素を送ることができる。たとえば、1方向
または両方向の通信を一部、順次通信にして、それによ
って、段間で必要とされるデータ・ワイヤを少なくする
ことができる。この場合、追加制御ワイヤが必要とされ
ることがある。図13で、どの方向に通信すべきかに関
する決定機能を通信タスク自体と分離した。図13によ
って、当業者には、様々な通信機構をどのように提供し
たらよいかは明らかである。
【0129】非同期制御 図11に示した制御機構は、カウンタフロー・パイプラ
インの好ましい実施例の基礎を形成する。既存のデータ
要素を削除することも、新しいデータ要素をデータ・ス
トリームに導入することもない段の場合、この形の制御
で十分である。じきに分かるように、完全制御機構は、
データ項目を挿入し削除することができるこの基本制御
システム装置を追加することによって作成することがで
きる。
【0130】同様に、すでに図9および図10で説明し
たCOP用の制御システムは、好ましい実施例に十分な
ものである。
【0131】図14は、各部分に分解された完全段30
の内部をさらに詳細に示す。好ましい実施例では、どち
らかの方向に流れるデータをデータ・ストリームから削
除することができる。上向き削除回路126および下向
き削除回路120はこのために示されている。この段の
これらの部分中の制御機構については、後で図15に関
して説明する。好ましい実施例では、上向きに流れるデ
ータは、ある種の状況下で、下向きに流れるストリーム
にデータを導入することができる。好ましい実施例で
は、新しいデータが上向きストリームに導入されること
はない。したがって、図14で、この段の部分124は
下向きストリームにデータを挿入するために示されてい
る。この段のこの部分用の制御機構については後で図1
6に関して説明する。他のストリームに作用するように
ひっくり返されてラベルを変更された同じ部分を使用し
て上向きストリームにデータを挿入することが望ましい
アプリケーションでは、そのようにすることができる。
挿入ボックスの動作の詳細については後で説明する。
【0132】削除用回路 図15は、1つの削除装置、たとえば126の詳細図を
示す。この装置は、上向きに流れる情報を削除するよう
に構成されている。下向きに流れる情報用の装置も同じ
であるが、下向きに流れるデータ向けに制御信号を修正
するようにひっくり返されてラベルを変更される。削除
装置がどのように動作するかを理解するには、段間の通
信でハンドシェーク信号が使用されることを想起された
い。図13に示したように、上向きデータ・フローの場
合、COPは、データを送信する下の段が動作できるこ
とを前記下の段に通知する。COPは、このためにGU
!信号を使用する。下の段は、上向きバウンド・データ
線32上に、送るべきデータを置き、次いで、AU!信
号を使用して、データの準備ができていることを上の段
に通知する。上の段がデータを取り込むと、下の段が首
尾よくデータを送ったことを示すPU!信号を下の段に
返す。
【0133】削除装置は、制御信号に作用し、データに
はまったく作用しない。削除装置は上の段と下の段を共
にフール(fool)することによって機能する。削除装置
は、AU!信号が上の段に到達するのを妨げ、それによ
って下の段が上の段にデータを送ろうとしたことを上の
段が分からないようにすることによって上の段をフール
する。削除装置は、上の段がデータを受け取った場合に
行うのとまったく同じようにAU!信号に応答してPU
!信号を返すことによって、上の段が、実際はデータを
受け入れていないときに、受け入れたと下の段に思い込
ませる。
【0134】図15の回路はこれを行う。通常の送信の
場合、セレクタ130は、下から上の段へAU!信号を
送る。この動作で、セレクタはAU!経路上で下から事
象を受け取り、図の1番上でAU!制御経路から出るよ
うに、「0」のラベルが付けられた端子から送り出す。
しかし、データを削除する場合、セレクタはKのラベル
が付けられたサイド入力136に沿ってそのように通知
される。K信号は、以後のデータ要素を削除または「キ
ル」すべきであることをセレクタに通知する。データ要
素を削除すべきである場合、セレクタはそのAU!入力
事象をその「1」出力に方向付ける。前記入力事象は前
記「1」出力で3つのXORブロック132、134、
138に進む。これらのXORブロックは通常の通信の
場合、上から下へ事象を送る。また、これらのXORブ
ロックは、セレクタの「1」出力によって刺激されたと
きに前記ブロックのそれぞれの出力の偽出力を生成す
る。
【0135】挿入用回路 挿入装置124を図16に示す。図16で、挿入装置の
制御経路はブロック124aとして示され、データ経路
はブロック124bとして示されている。この挿入装置
は上向きに流れるストリームから下向きに流れるストリ
ームにデータを挿入することができる。内容は同じであ
るが、他のデータ経路に作用するようにひっくり返され
た類似の回路を使用して、下向きストリームから上向き
ストリームにデータを挿入することもできる。この図で
は、そのような回路を図示していないが、当業者なら、
以下の説明からそのような回路がどのように動作するか
を理解できよう。
【0136】挿入回路データ経路124bは、下向きに
流れるデータ・ストリームに挿入すべき新しいデータ要
素を保持するための余分なレジスタ140を含む。この
レジスタは、下向きバウンド・データ・ストリームに挿
入すべきデータ要素を上向きバウンド・データ・レジス
タ60から受け取る。挿入回路は、この新しいデータ、
または下向きに流れるデータ経路36に沿って上から下
向きにくる正規データを選択するマルチプレクサ141
も含む。
【0137】本明細書で説明する制御機構では、上向き
のデータ・フローは、下向きに流れるストリームへのデ
ータ要素の挿入が完了するまで、挿入装置124中で遅
延させられる。上向きに流れるデータが上の段に送られ
るのは、下向きストリームへの新たな挿入の後に限られ
る。新しいデータを同時に下向きに送り、上向きに流れ
るデータが進めるようにする挿入装置を構想することが
できる。
【0138】挿入装置用の制御回路124aは2つの部
分から成る。セレクタ142およびXOR144が一方
の部分を形成し、「優先順位ブレンダ」148が他方の
部分を形成する。セレクタ142の事象入力は、下から
くるAU!信号からのものである。この信号は、有効な
データが下からくることを示す。このデータのうちのあ
るものを下向きストリームに挿入すべきかどうかは、セ
レクタのデータ入力143上の真G信号または偽G信号
の存在によってセレクタに示される。データを挿入すべ
きでない場合、挿入装置124はまったく動作しない。
この場合、セレクタはAU!制御経路上で下からきた事
象をXOR要素144を介してAU!制御出力経路に送
る。同様に、上からきたCD入力はXOR装置149に
よって下のCD制御出力に送られる。同様に、優先順位
ブレンダ148は、PD!入力およびPD?入力上の事
象間の直接接続をそれに対応するPD!出力およびPD
?出力に提供するように働く。
【0139】次に、挿入が行われる予定であることをセ
レクタデータ入力143に入った信号Gが示すときに何
が起こるかを検討する。AU!入力からセレクタに到着
した事象は「1」出力に送られる。これによって、優先
順位ブレンダのPG?入力へ事象が送られ、XOR装置
146を介して、挿入すべきデータをレジスタ140か
ら出力データ経路36上に送るようにマルチプレクサ1
41が切り替えられる。遅延要素145は、データ経路
がセットアップを完了できるようにするのに十分な遅延
の後、それ自体の出力をXOR149に送り、したがっ
て、図の下部にあるCD出力経路上で出力を生成する。
【0140】優先順位ブレンダのジョブは、挿入を行う
のに適した制御信号を生成することである。通常、優先
順位ブレンダは、その右側でのPD?信号およびPD!
信号の配置によって示されるように、それらの信号を直
接、スルー接続する。しかし、優先順位ブレンダは、P
G?入力によって活動化されたとき、PD?出力がまだ
生成されていない場合にこの出力を生成する。優先順位
ブレンダは続いて、PD!出力ではなくPG!出力に第
1のPD!応答を送る。
【0141】挿入装置よりも下の段は、挿入装置によっ
てデータ・ストリームに挿入されたデータと、挿入装置
よりも上の段から送られたデータとの違いを区別するこ
とができない。どちらの場合も、PD?信号およびPD
!信号は、CD信号と同様に妥当に順序付けられる。し
たがって、マルチプレクサ141によって出力データ・
ワイヤ36に送られたレジスタ140からのデータは下
の段に送られる。前述のようにこの動作が完了すると、
PD!事象が下から受け取られる。優先順位ブレンダは
このPD!事象を優先順位ブレンダ自体のPG!出力へ
送る。この場合、優先順位ブレンダは2つのことを行
う。第1に、XOR装置146に到着したときに、優先
順位ブレンダはマルチプレクサ141をスルー位置に切
り替える。第2に、優先順位ブレンダは、XOR144
を介して、最終的に、図の1番上にあるAU!出力上の
事象が最終的に、上向きバウンド・データが到着したこ
とを上の段に通知できるようにする。
【0142】状態図 段のすべての要素がアセンブルされると、非常に多くの
事象が同時に発生することができる。図6の5つの状態
によって記述された正常なデータ・フローの他に、デー
タを削除し、あるいはデータをストリームに挿入できる
ことによってさらに多くの状態が可能になる。これらの
状態は、上向きまたは下向きに流れるデータを削除でき
るためと、新しいデータを挿入できるために発生する。
図17の状態図は、完全なカウンタフロー・パイプライ
ンの単一の段が経験する可能性がある可能な1組の状態
を概略的に示す。
【0143】まず、図17の図が図6の図の一般的特性
を有するが、図6の各状態は複数の二次状態に分解され
ていることに留意されたい。たとえば、図6の1番上に
ある状態(E)は、図17では4つの状態、すなわち番
号0、4、3、15に分解されているように見える。実
際は、図6の状態図は図17の状態図の部分集合であ
り、図17中の状態を適切に組み合わせた場合、図6の
状態図ができる。
【0144】図17の状態図は特定のパイプライン・シ
ステムの特定の設計から得たものである。この図で、文
字「I」を含む符号は上向きバウンド・データを指し、
文字「R」を含む符号は下向きバウンド・データを指
す。この状態図は、上向きバウンド・ストリームから下
向きバウンド・ストリームへのデータの挿入に対処する
上で関与する状態を詳細に示す。OKIおよびPI!は
それぞれ、上向きバウンド・データを受け入れて送るこ
とを指す。OKRおよびPRIはそれぞれ、下向きバウ
ンド・データを受け入れて送ることを指す。GREは、
上向きバウンド・データ要素の結果として新しい下向き
バウンド・データ要素を挿入する必要を指す。この必要
は、上向きバウンド要素が到着した直後に分かる。NG
REはそのような必要がないことを指す。GRMは、上
向きバウンド要素と下向きバウンド要素を比較した結果
として新しい下向きバウンド・データを挿入する必要を
発見したことを指す。NGRMはそのような必要がない
ことを示す。PGは、新たに生成された要素を下向きス
トリームの一部として送る動作である。XXは、上向き
要素と下向き要素が共に存在すること、すなわち、状態
(F)に到達したことを検出したことを指す。YYは、
おそらく、下向きに流れるストリームに新しい要素を挿
入する場合を除き、段が空であることを検出したことを
指す。
【0145】これらの符号を念頭に置いて、図17の状
態図を解釈することができる。新たに生成された要素を
送るとき(PG)、外側リングの状態2、3、4、5、
6、8、9、10がすべて、内側リングの状態に至るこ
とに留意されたい。下向きストリームで新しい要素を生
成しなければならないことを示すGREが発生できるの
は、上向きに流れる要素が存在するときだけである。同
様に、GRMが発生できるのは、上向きに流れる要素と
下向きに流れる要素が共に存在するときだけである。
【0146】図17の状態図は、システムの挿入回路お
よび削除回路に対する動作のある種の規則を仮定してい
る。動作の他の規則が必要とされる場合、図17に類似
しているが同じではない状態図を描くことができる。当
業者なら、そのような状態図は一般に、本明細書で説明
するものなど複雑なシステムの動作を記述するために使
用されていることを認識されよう。
【0147】図17の状態図を実施するための非同期制
御機構の設計は簡単なものである。当業者なら、多数の
状態コード化のうちのどれでも可能であることを認識さ
れよう。たとえば、状態は、図4の2つのマーカ・ビッ
ト62および64と、生成された結果の存在を示すため
のビットと、現在存在する上向きに流れるデータ要素が
すでに、新しい下向きに流れる要素を生成しており、し
たがって他の下向き流れる要素を生成しないことを示す
ためのビットと、最後に、比較動作が終了したことを示
すためのビットとによってコード化することができる。
そのような同期制御の設計は当技術分野の範囲内であ
る。
【0148】しかし、非同期制御の設計はそれほど容易
なものではない。図13に、単一の段をどのように、異
なる動作を別々に実行する構成部分に分解したらよいか
が示されている。もちろん、他の設計も可能である。特
定の設計を示すことによって実施態様を単一の設計に限
定することは本明細書の趣旨ではない。本出願人はむし
ろ、必要な完全非冗長比較を提供する多数の設計のどれ
でも使用できることを指摘する。
【図面の簡単な説明】
【図1】 1組のデータ経路段を操作するカウンタフロ
ー・パイプライン制御のブロック図である。
【図2】 段、上向きデータ・フロー経路および下向き
データ・フロー経路、ならびに段間の制御通信経路を示
すカウンタフロー・パイプラインのブロック図である。
【図3】 双方向データ経路を使用するカウンタフロー
・パイプラインのブロック図である。
【図4】 レジスタの状態を示すためのマーカ・フリッ
プ・フロップを含む簡単なカウンタフロー・パイプライ
ンの単一の段内のレジスタ手段および制御手段のブロッ
ク図である。
【図5】 カウンタフロー・パイプラインの単一の段内
のレジスタ手段および比較手段ならびにデータ計算装置
のブロック図である。
【図6】 5つの主要な状態を示すカウンタフロー・パ
イプラインの単一の段の状態図である。
【図7】 カウンタフロー・パイプラインの同期実施態
様用の可能な1組の通信信号およびクロッキング信号の
詳細図である。
【図8】 各段間にある「COP」のラベルの付いた調
停装置を示すカウンタフロー・パイプラインの非同期実
施態様のブロック図である。
【図9】 8つの状態を示すCOPで使用されるアービ
タの状態図である。
【図10】 図9のアービタを使用するCOPの可能な
実施態様のブロック図である。
【図11】 レジスタ手段が一杯であるときと、調停機
構を解放すべきときを検出するための機構を示すカウン
タフロー計算パイプラインの非同期実施態様の1つの段
に必要とされる制御機構のブロック図である。
【図12】 分岐パイプラインのブロック図である。分
岐点よりも上には、2つのカウンタフロー・パイプライ
ンがあり、下には単一のパイプラインしかない。分岐点
で上向きデータ・フロー経路が分割され、下向きデータ
・フローが組み合わされる。
【図13】 実施例用の非同期実施態様のブロック図で
ある。上向き通信および下向き通信が実際にどのように
行われているかに関してさらに詳細に示す。
【図14】 削除、挿入、および比較用の経路に分解さ
れた非同期カウンタフロー・パイプラインの単一の段の
ブロック図である。
【図15】 実施例の削除部分に必要とされる制御機構
の図である。
【図16】 データ・ストリームに挿入すべきデータを
保持するための特別レジスタ手段を含むカウンタフロー
・パイプラインの挿入部分のブロック図である。
【図17】 挿入および削除用の事象を示すカウンタフ
ロー・パイプラインのある実施態様の単一の段の状態図
である。
【符号の説明】
20 段、 24 データ経路、 28 制御経路、
31 入力ポート、33 出口ポート、 42 双方向
データ経路、 50 データ・パイプライン、 52
制御システム、 60 レジスタ、 62 マーカ・フ
リップ・フロップ、 70 マルチプレクサ、 72
比較計算ブロック、 78 クロック、 80 発信回
路。
フロントページの続き (72)発明者 アイヴァン・イー・サザーランド アメリカ合衆国 90405 カリフォルニア 州・サンタ モニカ・ワズワース アヴェ ニュ・125 (72)発明者 ロバート・エフ・スプロール アメリカ合衆国 02160 マサチューセッ ツ州・ニュートン・カークストール ロー ド・164 (72)発明者 イアン・ダブリュ・ジョーンズ アメリカ合衆国 95070 カリフォルニア 州・サラトガ・カサ ブランカ レーン・ 18854

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 相互接続された段を含む2方向パイプラ
    インで相互に逆方向に流れるデータ要素を管理するシス
    テムにおいて、 前記パイプラインでの段から段への前記データ要素の移
    動を制御する回路と、 前記パイプラインを下向きに流れる各データ要素を、そ
    の各データ要素と出会った前記パイプラインを上向きに
    流れてきた各データ要素と相互作用させる回路とを備え
    ることを特徴とするシステム。
  2. 【請求項2】 さらに、前記パイプラインを下向きに流
    れる各データ要素を、その各データ要素と出会った前記
    パイプラインを上向きに流れてきた特定のデータ要素と
    一度だけ相互作用させる回路を備えることを特徴とする
    請求項1に記載のシステム。
  3. 【請求項3】 相互接続された段を含む2方向パイプラ
    インで相互に逆方向に流れるデータ要素を管理する方法
    において、 前記パイプラインでの段から段への前記データ要素の移
    動を制御するステップと、 前記パイプラインを下向きに流れる各データ要素を、前
    記パイプラインを上向きに流れて前記各データ要素と出
    会った各データ要素と相互作用させるステップとを含む
    ことを特徴とする方法。
  4. 【請求項4】 さらに、前記パイプラインを下向きに流
    れる各データ要素を、前記パイプラインを上向きに流れ
    てきて前記各データ要素と出会った特定のデータ要素と
    一度だけ相互作用させるステップを含むことを特徴とす
    る請求項3に記載の方法。
  5. 【請求項5】 さらに、前記パイプラインを下向きに流
    れる第1のデータ要素の少なくとも一部を、前記パイプ
    ラインを上向きに流れてきて前記第1のデータ要素の少
    なくとも一部が出会った第2のデータ要素の一部と比較
    するステップを含むことを特徴とする請求項3に記載の
    方法。
  6. 【請求項6】 さらに、少なくとも空(E)、一杯
    (F)、上向きに移動するデータ要素が存在する
    (U)、下向きに移動するデータ要素が存在する
    (D)、およびCompleteの各状態を占めること
    ができる前記パイプライン中の各段の状態を判定するス
    テップを含むことを特徴とする請求項3に記載の方法。
  7. 【請求項7】 さらに、前記比較ステップが完了するま
    で、一杯状態の段からデータ要素が移動するのを妨げる
    ステップを含むことを特徴とする請求項6に記載の方
    法。
JP28157894A 1993-10-21 1994-10-21 パイプラインで相互に逆方向に流れるデータ要素を管理するシステム及び方法 Expired - Fee Related JP3588487B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14065493A 1993-10-21 1993-10-21
US140654 1993-10-21

Publications (2)

Publication Number Publication Date
JPH07253885A true JPH07253885A (ja) 1995-10-03
JP3588487B2 JP3588487B2 (ja) 2004-11-10

Family

ID=22492220

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28157894A Expired - Fee Related JP3588487B2 (ja) 1993-10-21 1994-10-21 パイプラインで相互に逆方向に流れるデータ要素を管理するシステム及び方法

Country Status (5)

Country Link
US (1) US5572690A (ja)
EP (1) EP0650117B1 (ja)
JP (1) JP3588487B2 (ja)
KR (1) KR100338790B1 (ja)
DE (1) DE69430352T2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011008773A (ja) * 2009-05-22 2011-01-13 Canon Inc 情報処理装置、回路、情報処理方法、及びプログラム
EP2393004A1 (en) * 2010-06-07 2011-12-07 Canon Kabushiki Kaisha Data comparison apparatus, cache apparatus comprising it, and control method thereof

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732233A (en) * 1995-01-23 1998-03-24 International Business Machines Corporation High speed pipeline method and apparatus
US5732269A (en) * 1995-04-21 1998-03-24 International Business Machines Corporation Data adapter transparent to application I/O path
US5704054A (en) * 1995-05-09 1997-12-30 Yale University Counterflow pipeline processor architecture for semi-custom application specific IC's
WO1997008620A2 (en) * 1995-08-23 1997-03-06 Philips Electronics N.V. Data processing system comprising an asynchronously controlled pipeline
JP3510729B2 (ja) * 1996-02-29 2004-03-29 三洋電機株式会社 命令実行方法および命令実行装置
US6209020B1 (en) * 1996-09-20 2001-03-27 Nortel Networks Limited Distributed pipeline memory architecture for a computer system with even and odd pids
US5937177A (en) * 1996-10-01 1999-08-10 Sun Microsystems, Inc. Control structure for a high-speed asynchronous pipeline
US5964866A (en) * 1996-10-24 1999-10-12 International Business Machines Corporation Elastic self-timed interface for data flow elements embodied as selective bypass of stages in an asynchronous microprocessor pipeline
US6065109A (en) * 1997-02-05 2000-05-16 Sun Microsystems, Inc. Arbitration logic using a four-phase signaling protocol for control of a counterflow pipeline processor
US5838939A (en) * 1997-05-09 1998-11-17 Sun Microsystems, Inc. Multi-issue/plural counterflow pipeline processor
US5996059A (en) * 1997-07-01 1999-11-30 National Semiconductor Corporation System for monitoring an execution pipeline utilizing an address pipeline in parallel with the execution pipeline
US6360288B1 (en) * 1997-10-17 2002-03-19 Sun Microsystems, Inc. Method and modules for control of pipelines carrying data using pipelines carrying control signals
EP1121631B1 (en) 1998-07-22 2007-04-25 California Institute Of Technology Reshuffled communications processes in pipelined asynchronous circuits
US6085316A (en) * 1998-07-28 2000-07-04 Sun Microsystems, Inc. Layered counterflow pipeline processor with anticipatory control
US6163839A (en) 1998-09-30 2000-12-19 Intel Corporation Non-stalling circular counterflow pipeline processor with reorder buffer
US6192466B1 (en) 1999-01-21 2001-02-20 International Business Machines Corporation Pipeline control for high-frequency pipelined designs
US6442671B1 (en) * 1999-03-03 2002-08-27 Philips Semiconductors System for priming a latch between two memories and transferring data via the latch in successive clock cycle thereafter
US7546444B1 (en) 1999-09-01 2009-06-09 Intel Corporation Register set used in multithreaded parallel processor architecture
AU7097900A (en) 1999-09-01 2001-03-26 Intel Corporation Branch instructions in a multithreaded parallel processing system
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US6725287B1 (en) 2000-11-09 2004-04-20 Elity Systems, Inc. Method and system for capturing streaming data by an actionable information engine
US7017064B2 (en) * 2001-05-09 2006-03-21 Mosaid Technologies, Inc. Calculating apparatus having a plurality of stages
US7283557B2 (en) * 2002-01-25 2007-10-16 Fulcrum Microsystems, Inc. Asynchronous crossbar with deterministic or arbitrated control
US7437724B2 (en) * 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
US7698535B2 (en) 2002-09-16 2010-04-13 Fulcrum Microsystems, Inc. Asynchronous multiple-order issue system architecture
US7260753B2 (en) 2003-07-14 2007-08-21 Fulcrum Microsystems, Inc. Methods and apparatus for providing test access to asynchronous circuits and systems
US7584449B2 (en) * 2004-11-22 2009-09-01 Fulcrum Microsystems, Inc. Logic synthesis of multi-level domino asynchronous pipelines
US7814280B2 (en) * 2005-01-12 2010-10-12 Fulcrum Microsystems Inc. Shared-memory switch fabric architecture
US20070123792A1 (en) * 2005-11-17 2007-05-31 Charlotte-Mecklenburg Hospital Authority D/B/A Carolinas Medical Center System and method for determining airway obstruction
US7916718B2 (en) * 2007-04-19 2011-03-29 Fulcrum Microsystems, Inc. Flow and congestion control in switch architectures for multi-hop, memory efficient fabrics
US7757017B2 (en) * 2007-05-15 2010-07-13 International Business Machines Corporation Adjusting direction of data flow between I/O bridges and I/O hubs based on real time traffic levels
US7984272B2 (en) * 2007-06-27 2011-07-19 International Business Machines Corporation Design structure for single hot forward interconnect scheme for delayed execution pipelines
US7769987B2 (en) * 2007-06-27 2010-08-03 International Business Machines Corporation Single hot forward interconnect scheme for delayed execution pipelines
US7913007B2 (en) * 2007-09-27 2011-03-22 The University Of North Carolina Systems, methods, and computer readable media for preemption in asynchronous systems using anti-tokens
US8327101B2 (en) * 2008-02-01 2012-12-04 International Business Machines Corporation Cache management during asynchronous memory move operations
US8356151B2 (en) * 2008-02-01 2013-01-15 International Business Machines Corporation Reporting of partially performed memory move
US8275963B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Asynchronous memory move across physical nodes with dual-sided communication
US8245004B2 (en) * 2008-02-01 2012-08-14 International Business Machines Corporation Mechanisms for communicating with an asynchronous memory mover to perform AMM operations
WO2010039312A2 (en) 2008-06-27 2010-04-08 The University Of North Carolina At Chapel Hill Systems, pipeline stages, and computer readable media for advanced asynchronous pipeline circuits
US8385971B2 (en) * 2008-08-19 2013-02-26 Digimarc Corporation Methods and systems for content processing
JP5627330B2 (ja) 2010-08-02 2014-11-19 キヤノン株式会社 情報処理装置、キャッシュ装置およびデータ処理方法
WO2015192062A1 (en) 2014-06-12 2015-12-17 The University Of North Carolina At Chapel Hill Camera sensor with event token based image capture and reconstruction

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BE636474A (ja) * 1962-09-06
GB1506972A (en) * 1976-02-06 1978-04-12 Int Computers Ltd Data processing systems
JPS57139856A (en) * 1981-02-23 1982-08-30 Nippon Telegr & Teleph Corp <Ntt> Data driving information processing system
US4489393A (en) * 1981-12-02 1984-12-18 Trw Inc. Monolithic discrete-time digital convolution circuit
US5187800A (en) * 1985-01-04 1993-02-16 Sun Microsystems, Inc. Asynchronous pipelined data processing system
GB8605366D0 (en) * 1986-03-05 1986-04-09 Secr Defence Digital processor
US4991078A (en) * 1987-09-29 1991-02-05 Digital Equipment Corporation Apparatus and method for a pipelined central processing unit in a data processing system
EP0365188B1 (en) * 1988-10-18 1996-09-18 Hewlett-Packard Company Central processor condition code method and apparatus
US5210750A (en) * 1989-03-23 1993-05-11 International Business Machines Corporation Method and apparatus for distributed queue multiple access in a communication system
US5107465A (en) * 1989-09-13 1992-04-21 Advanced Micro Devices, Inc. Asynchronous/synchronous pipeline dual mode memory access circuit and method
US5361367A (en) * 1991-06-10 1994-11-01 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Highly parallel reconfigurable computer architecture for robotic computation having plural processor cells each having right and left ensembles of plural processors

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011008773A (ja) * 2009-05-22 2011-01-13 Canon Inc 情報処理装置、回路、情報処理方法、及びプログラム
EP2393004A1 (en) * 2010-06-07 2011-12-07 Canon Kabushiki Kaisha Data comparison apparatus, cache apparatus comprising it, and control method thereof
JP2011257880A (ja) * 2010-06-07 2011-12-22 Canon Inc 演算装置、キャッシュ装置、その制御方法及びコンピュータプログラム
EP2437159A1 (en) * 2010-06-07 2012-04-04 Canon Kabushiki Kaisha Operation apparatus and control method thereof
US8812783B2 (en) 2010-06-07 2014-08-19 Canon Kabushiki Kaisha Operation apparatus, cache apparatus, and control method thereof

Also Published As

Publication number Publication date
EP0650117B1 (en) 2002-04-10
DE69430352D1 (de) 2002-05-16
DE69430352T2 (de) 2003-01-30
US5572690A (en) 1996-11-05
KR100338790B1 (ko) 2002-10-09
JP3588487B2 (ja) 2004-11-10
KR950012242A (ko) 1995-05-16
EP0650117A1 (en) 1995-04-26

Similar Documents

Publication Publication Date Title
JP3588487B2 (ja) パイプラインで相互に逆方向に流れるデータ要素を管理するシステム及び方法
KR900006793B1 (ko) 패킷 스위치 다중 대기행렬 NxM 스위치 노오드 및 처리 방법
Dally et al. The torus routing chip
US4482996A (en) Five port module as a node in an asynchronous speed independent network of concurrent processors
US4417244A (en) Automatic path rearrangement for blocking switching matrix
JP2604967B2 (ja) 適応交換装置
WO2003065236A1 (en) Asynchronous crossbar with deterministic or arbitrated control
JPH05342178A (ja) 調停回路およびそれを用いたデータ処理装置
EP0810529A1 (en) Fast arbiter with decision storage
JPS58502073A (ja) プロセッサの並行ネットワ−クにおけるア−ビタ・スイッチ
WO1984001079A1 (en) Four way arbiter switch for a five port module as a node in an asynchronous speed-independent network of concurrent processors
WO1997008620A2 (en) Data processing system comprising an asynchronously controlled pipeline
EP0104796B1 (en) Four way selector switch for a five port module as a node in an asynchronous speed independent network of concurrent processors
JPH11167560A (ja) データ転送システム、このシステムに用いるスイッチング回路、アダプタ及びこのシステムを有する集積回路並びにデータ転送方法
Parhami et al. Data-driven control scheme for linear arrays: application to a stable insertion sorter
US20030091038A1 (en) Asynchronous N X M arbitrating switch and associated method
Dickey et al. A combining switch for the NYU Ultracomputer
US6085316A (en) Layered counterflow pipeline processor with anticipatory control
US5123090A (en) Data processing apparatus for processing asynchronous data in an asynchronous type data flow computer
JP3031591B2 (ja) アクセス調停方式
JP2878160B2 (ja) 競合調停装置
KR940005025B1 (ko) 패킷방식 다단 상호 접속망용 스위칭 소자
JPH0424741B2 (ja)
JPH01177799A (ja) スイッチング方式
JPH06208549A (ja) 同期装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040420

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040706

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040803

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040816

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees