JP2002530736A - 多重処理システムにおける改良結果処理方法 - Google Patents

多重処理システムにおける改良結果処理方法

Info

Publication number
JP2002530736A
JP2002530736A JP2000582884A JP2000582884A JP2002530736A JP 2002530736 A JP2002530736 A JP 2002530736A JP 2000582884 A JP2000582884 A JP 2000582884A JP 2000582884 A JP2000582884 A JP 2000582884A JP 2002530736 A JP2002530736 A JP 2002530736A
Authority
JP
Japan
Prior art keywords
job
memory
pointer
processing system
speculatively
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
JP2000582884A
Other languages
English (en)
Other versions
JP2002530736A5 (ja
JP4608100B2 (ja
Inventor
ホルムベルク、ペル、アンデルス
ラルス − オルヤン クリング
ヨンソン、ステン、エドワード
エゲランド、テルイエ
Original Assignee
テレフオンアクチーボラゲツト エル エム エリクソン(パブル)
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
Priority claimed from SE9803901A external-priority patent/SE9803901D0/xx
Application filed by テレフオンアクチーボラゲツト エル エム エリクソン(パブル) filed Critical テレフオンアクチーボラゲツト エル エム エリクソン(パブル)
Publication of JP2002530736A publication Critical patent/JP2002530736A/ja
Publication of JP2002530736A5 publication Critical patent/JP2002530736A5/ja
Application granted granted Critical
Publication of JP4608100B2 publication Critical patent/JP4608100B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

(57)【要約】 本発明は、多数のプロセッサ(30−1、30−2、...、30−N)により、ジョブが推論的に並列に実行される多重処理システムに向けられている。更なる粗並列性、いわゆるジョブ・レベルの並列性の存在について推論し、かつジョブの並列実行を阻止する依存性が検出される場合にのみに逐次的実行を支援することにより、高度の並列性を抽出することができる。本発明によれば、通信メッセージ、オペレーティング・システム・コール又は推論的に実行したジョブの新しいジョブ信号のような結果を保持するために、プライベート・メモリ・バッファを推論的に割り付け、これらの結果は、割り付けられたメモリ・バッファに推論的に直接書き込まれる。コミット優先順位が推論的に実行したジョブに割り当てられると、割り付けられたメモリ・バッファを指示しているポインタは、I/O(10)装置に転送され、このI/O装置が転送されたポインタによりメモリ・バッファをアクセス可能となる。このようにして、メッセージおよび信号をプライベート・メモリ・バッファに推論的に書き込むことにより、更なる並列性を抽出することができる。

Description

【発明の詳細な説明】
【0001】 (発明の技術分野) 本発明は、概して処理技術に関し、特に、多数のプロセッサ又は複数の処理ユ
ニットを有する処理システムに関する。
【0002】 (発明の背景) コンピュータ・システム又は処理システムにおける処理能力の改善に対する絶
え間のないない要求により、より高速かつより効率的なプロセッサが要求されて
いる。処理能力を増大させる通常的なアプローチは、ますます高くした周波数及
び高速のメモリを使用することによっている。
【0003】 特に、アプリケーション・ソフトウェアを変更することなく、処理システムの
処理能力を増加させる通常的な方法は、隣接する命令間で見出される密並列性(
fine−grained parallelism)を検出するいわゆるスー
パースケーラを使用することである。スーパースケーラでは、いくつかの命令を
並列に同時実行するようにプロセッサ内の機能ユニットを構成する。これは、し
ばしば命令レベルの並列性(instruction−level paral
lelism)と呼ばれる。
【0004】 処理能力を増加させる他の方法は、処理システムを多数のプロセッサシステム
、即ち並列に動作する多数のプロセッサを有するプロセッサ・システムとして構
築することである。いくつかの処理システムは、対称型マルチ・プロセッサ(S
ymmetrical Multi Processor:SMP)として知ら
れたアーキテクチャーにより高いパフォーマンス処理を達成する。スーパースケ
ーラ・プロセッサにより達成される密並列性(fine−grained pa
rallelism)に対して、SMPアーキテクチャーは、現在のプログラミ
ング原理により設計されたプログラムにおいて明確に指定された、又はコンパイ
ル中に単一プロセッサ・システムによる逐次な実行用に設計されたプログラムか
ら取り出される粗並列性(coarse−grained paralleli
sm)を検出する。SMPアーキテクチャーでは、複数のタスクのそれぞれを複
数のプロセッサのうちの対応するものによりを実行する。これらのタスクは、互
に同時的な複数処理、即ち複数スレッド(thread)である。
【0005】 ソヒ(Sohi)、ブリーチ(Breach)及びビジャイクマル(Vija
ykumar)によるマルチスカラー・プロセッサの論文(イタリア、サンタ・
マルゲリータにおけるコンピュータ・アーキテクチャーに関する第22回年国際
シンポジュウム)において、いわゆるマルチスカラー・プロセッサが説明されて
いる。マルチスカラー・モデルの実行では、制御依存性の観点からスタティック
・プログラムを表す制御フロー・グラフ(CFG:control flow
graph)を複数のタスクに分割し、マルチスカラー・プロセッサがCFGを
推論的に通り、タスク・サイズの複数ステップを取り込み、絶えずタスク内のあ
らゆる命令を調べる。タスクの初期プログラム・カウンタを処理ユニットに渡す
ことにより、実行する複数の処理ユニットの集合のうちの1つに一つのタスクが
割り付けられる。そこで、多数のタスクが複数の処理ユニットにより並列に実行
可能となり、1サイクル当たりの多数命令の総合実行率に帰結する。マルチスカ
ラー・ハードウェアの機能は、CFGを通って、複数の処理ユニットに複数のタ
スクを割り付け、かつ逐次的に実行する形式により、これらのタスクを実行する
。必要により、付加的なハードウェアを設けて推論的なメモリ動作を保持し、メ
モリ依存性の違反を検出し、訂正措置を開始する。先頭にあるタスクは、非推論
的であると保証されたタスクのみであるから、先頭を除き、全てのユニットによ
り実行されるメモリ動作は、推論的である。
【0006】 米国特許第5,832,262号は、概して1スケジューリング・プロセッサと
の連係により作動して1以上の他のプロセッサにより実行されるべき多数のタス
クを管理するリアル・タイム・ハードウェア・スケジューラに関連する。このス
ケジューラは、2つのリアル・タイム・ハードウェア・スケジューリング・ユニ
ットにより共有メモリ内の循環FIFOキュー管理し、そのうちの一つは、実行
待ちタスクを管理し、その他は完了したタスクを管理する。スケジューリング・
プロセッサは、新しいタスクをスケジュールする要求に基づいて、タスク制御ブ
ロックを構築して、特定の共有メモリにおけるメモリ位置にそのブロックをスト
アすることにより、動作する。次いで、スケジューリング・プロセッサによって
、その位置に対するポインタがリアル・タイム・ハードウェア・スケジューラに
送信される。スレーブ・プロセッサは、実行待機タスクの共有メモリ内の位置に
対するポインタを取り出すことができる。そこで、スレーブ・プロセッサは、ポ
インタを使用して実際のタスクを取り出し、そのタスクを実行し、スケジューラ
にタスク完了を通告する。従って、以上の特許は、通常のマルチタスク・システ
ムにおける間接信号処理に関する。
【0007】 米国特許第5,781,763号は、複数の命令を推論的に実行するプロセッサ
を開示している。プロセッサは、命令レベルでの並列性が得られるように所定の
複数動作に割り付けられた多数のスーパースケーラ実行ユニットを有する。
【0008】 米国特許第5,560,029号は、マルチ・スレディング(multi−th
reading)目的に使用される同期コプロセッサを有するデータ処理システ
ムを開示している。
【0009】 米国特許第5,195,181号は、概してメッセージの処理に関し、特に複数
のポインタを使用することにより、個別的な受信プロセッサと送信プロセッサと
の間でメッセージを転送する方法に関する。
【0010】 しかしながら、より効率的な処理システムに対する一般的な要求が依然として
存在する。
【0011】 (発明の概要) 本発明は、概して、複数のジョブが推論的に並列に実行される多重処理システ
ムに関する。高度の並列性は、更なる粗並列性、いわゆるジョブ・レベルの並列
性の存在を推論すると共に、複数ジョブの並列実行を阻止する依存性が検出され
る場合にのみ、逐次実行を支援することにより、引き出すことが可能とされる。
このアプローチは、異なる複数のプロセッサにより複数のジョブを並列に実行可
能にするが、実行される複数のジョブは、順にコミットされ、即ち、リタイアさ
せる必要があり、複数の推論的に実行したジョブ(speculatively
executed jobs)がメモリの書き込み及び信号送出をコミットす
るための優先順位を待機する。
【0012】 ジョブの推論的な実行は、一般的に、推論的に実行したジョブの結果を保持す
る機構と共に、推論が成功したか否かを判断するための依存性を検出する機構を
必要とする。推論が成功したときは、結果が最終的にコミットされ、また推論が
失敗したときは、結果はフラッシュされ、かつ対応するジョブを再開させる。通
常、推論的に実行したジョブの結果は、中間メモリ位置に保持され、コミットの
際に、これらの結果は、中間メモリ位置からメイン・メモリ内の実位置に、及び
/又は外部ユニットに転送される。代替として、「実位置」から古いデータは、
履歴ログに記録され、かつ推論結果は、実位置に書き込まれる。推論が失敗した
ときは、実位置は、履歴ログを使用して古いデータを修復することにより、復元
される。推論が成功したときは、推論データは、実位置内の正しい位置に既に存
在している。
【0013】 このような処理システムの展開中では、推論そのものがシステム・パフォーマ
ンスを増加させる非常に効率的な方法であっても、推論結果を処理する機構は、
パフォーマンスの更なる改善に対するボトルネックを構成することが認識されて
いた。
【0014】 本発明は、このような問題共に関連する他の問題を効率的な方法によりを克服
する。
【0015】 本発明の概要的な目的は、高度の並列処理を提供できる効率的な多重処理シス
テムを提供することにある。
【0016】 本発明の他の目的は、多重処理システムにおいて結果を処理する効率的な方法
を提供することにある。
【0017】 これらの目的及び他の目的は、添付する特許請求の範囲により定義されている
本発明により達成される。
【0018】 本発明による概要的な概念が、推論的に実行したジョブの結果を保持するため
のプライベート・メモリ・バッファを推論的に割り付け、かつこれらの結果を割
り付けたメモリ・バッファに直接、推論的に書き込む。推論的に実行したジョブ
にコミット優先順位を割り当てると、割り付けメモリ・バッファを指示するポイ
ンタのみが入出力装置に転送され、この入出力装置が転送されたポインタによっ
てメモリ・バッファから結果をアクセスすることが可能となる。この機構は、入
出力プロセッサ、ネットワーク・コントローラ、イサーネット回路又はジョブ信
号スケジューラのような入出力装置によってアクセス可能なプライベート・メモ
リ・バッファに、通信メッセージ、オペレーティング・システム・コール及びジ
ョブ信号を推論的に書き込むのをサポートする。これは、対応するジョブの実行
が推論的だけでなく、メモリ・バッファに対する割り付け及び書き込みも実行さ
れるので、それ自体、更なる並列性を取り出せることを意味する。
【0019】 本発明は、ポインタを復元することを必要とするだけで、個々のデータの復元
は必要でないので、依存性を検出したときは、更に、急速な復帰も可能にする。
【0020】 プロセッサは、推論モードにおいて通信メッセージ、オペレーティング・シス
テム・コール又は新しいジョブ信号に関する全ての情報を転送し、これによって
時間上でデータ転送を拡大させて、帯域幅要求を軽減させることができる。
【0021】 特殊なハードウェアを使用してハードウェア実施の推論の場合に、変数の推論
状態を保持するために使用されるハードウェア・キューを通って割り付けられた
メモリ・バッファに書き込み、これらのハードウェア・キューに対する圧力を軽
減させ必要はない。
【0022】 標準的なオフ・ザ・シェルフ(off−the−shelf)マイクロプロセ
ッサを使用してソフトウェア実施の推論の場合には、推論書き込みを行うための
コードが実質的に圧縮される。
【0023】 更に、メイン・メモリ内に割り付けたプライベート・メモリ・バッファに新し
い記録及び対象を直接、推論的に書き込むことをサポートできることも認識され
ていた。推論的に実行したジョブにより発生した新しい記録又は対象は、プライ
ベート・メモリ・バッファが推論的に割り付けられ、また推論的に実行したジョ
ブに対してコミット優先順位が割り当てられたときは、メイン・メモリ内の所定
の位置に新しい記録及び対象が既に配置されており、更なる転送は必要でない。
【0024】 しかしながら、本発明による機構は、変数の非推論的な状態の位置がプライブ
ート・メモリ位置ではあり得ないが、共有メモリ位置でなければならないので、
変数の推論書き込みのために通常、カスタマイズされることはない。
【0025】 本発明は、下記の効果を提供する。 ‐高度の並列性を提供する。 ‐推論的な実行のためのオーバーヘッドが最小化され‐推論割り付けメモリ・
バッファに対するアクセスがロール・バック及び依存性チェックをサポートする
必要がない。 ‐帯域幅要求が軽減される。 ‐書き込みキュー内のメモリ領域が節約され、処理ユニットがストールするの
を防止する。 ‐複数のポインタのみを転送するので、コミット優先順位においてオフ・ロー
ディングが速い。 ‐発生した通信メッセージ及びジョブ信号を一回書き込むだけである。
【0026】 本発明により提供される他の効果は、本発明の実施例の下記説明を読むことに
より明らかとなる。
【0027】 本発明は、その更なる目的及び効果と共に、添付する図面と共に行う下記説明
を参照することにより、最も良く理解される。
【0028】 (発明の実施例の詳細な説明) 図の全般にわたり、対応する又は同一の要素に対して同一の参照文字を使用す
る。
【0029】 本発明を良く理解するために、以下、図1を参照して本発明により処理する推
論結果に対する概要的な原理を簡単に説明する。
【0030】 図1は、本発明による概要的な処理システムの簡単な図である。この処理シス
テムは、入出力(I/O)装置10、ジョブ分配器20、多数のプロセッサ又は
プロセッサ・ユニット30−1〜30−N、依存性チェッカ35及びメイン・メ
モリ40を備えている。
【0031】 I/O装置10は、信号及びメッセージを受信して送出する。ジョブ分配器2
0は、I/O装置10から複数のジョブ信号を受信し、かつこれらのジョブ信号
をジョブの並列実行用のプロセッサ30−1〜30−Nに割り当てる。並列実行
中に、ジョブのうちの1つは、割り付けられたコミット優先順位であり、非推論
的に実行されるのに対して、他のジョブは推論的に実行される。プロセッサ30
は、商業的に対称的なマルチプロセッサからハードウェアにより全て実現された
実行パイプラインの範囲まで、任意の種類の処理ユニットが可能である。依存性
チェッカ35は、推論的に実行したジョブとコミット優先順位を有するジョブと
の間のデータ依存性を検出して推論的な実行が成功したか否かを判断するように
構成されている。実行中は、チェッカ35がデータ・アクセスについて依存性チ
ェックを行って読み出し及び書き込みのプログラム順序が保持されていることを
チェックする。依存性チェックは、多数の方法のうちのいずれかにより実現可能
とされる。例えば、以下で説明するように、アドレス比較方法又は可変マーカ方
法による。
【0032】 本発明によれば、通信メッセージ、オペレーティング・システム(OS)コー
ル及び推論的に実行したジョブにより発生した新しいジョブ信号のような結果に
対してメイン・メモリ40内に多数のメモリ・バッファを割り付ける。メモリ・
バッファは、好ましくは、プール45−1〜45−Nのバッファに分割されて、
各プロセッサ30はそれ自体のプール45のバッファを有する。都合よいことに
、各プールのバッファは、図1に示すように、メイン・メモリ内のリンク・リス
トとして、実施される。
【0033】 推論的に実行したジョブにより発生した通信メッセージ等は、対応するプロセ
ッサ30にプール45の割り付けバッファにプライベート・メモリ・バッファを
推論的に割り付けられ、かつメッセージは、図1に示すように割り付けられたプ
ライベート・バッファに推論的に書き込まれる。推論的な実行は、メッセージの
実際的な送出を含むべきでない。これは、対応するジョブがコミット優先順位を
獲得するまで、割り付けバッファから通信チャネルにメッセージを手渡してはな
らないことを意味する。推論的に実行したジョブにコミット優先順位を割り当て
ると、割り付けメモリ・バッファに対するポインタは、I/O装置10に転送さ
れる。メイン・メモリ40は、I/O装置10が転送したポインタにより通信メ
ッセージを取り出せるように、I/O装置10及びプロセッサ30−1〜30−
Nにより共有される。
【0034】 ポインタは、多数の方法のうちの任意のものによりI/O装置に転送されても
よい。例えば、ポインタをI/O装置に転送する3つの基本的な手順を以下に概
説する。 i)コミット時に、関連プロセッサからI/O装置にポインタを直接、書き込
む。 ii)コミット時に、メモリ手段にポインタを書き込み、これをI/O装置に
よるポインタについてチェックする。 iii)中間メモリ位置にポインタを推論的に書き込み、かつコミット時に、
中間メモリ位置からI/O装置にポインタを転送する。
【0035】 推論が失敗したことを示す依存性が検出されたときは、割り付けメモリ・バッ
ファが単純に割り付け解除され、高速の修復を可能にする。
【0036】 推論的な実行のみならず、通信メッセージ、新しいジョブ信号及びOSコール
に対するバッファの推論割り付けもサポートすることにより、並列性が更に促進
される。
【0037】 更に、本発明は、機能プログラミング言語による新しい記録、又はオブジェク
ト・オリエンテッド・プログラミング言語による新しいオブジェクトの推論書き
込みに適用可能である。この場合、推論的に実行したジョブにより発生した新し
い記録即ちオブジェクトがメイン・メモリ内のプライベート・メモリ・バッファ
が推論的に割り付けられて、プライベート・メモリ・バッファに書き込まれる。
推論が失敗であれば、専用バッファは、単純に割り付け解除される。他方、推論
が成功であれば、コミット時に、新しい記録即ちオブジェクトが既にメイン・メ
モリの所定の位置にあって、それ以上の転送は必要でない。新しい記録/オブジ
ェクトは、共有メモリに対応するポインタ上で処理することにより、例えばポイ
ンタを共有メモリにおける変数に書き込むことにより、使用されてもよい。記録
/オブジェクトは、実行において使用されてもよく、それ以上必要でないときは
、単純に無視されて、対応するメモリ・バッファが割り付け解除される。このポ
インタは、更に外部ユニットに転送されてもよい。
【0038】 オブジェクト及び記録は、しばしば、通信メッセージ及びジョブ信号より大き
な変動サイズがあり、記録/オブジェクト用のメモリ・バッファは、「ヒープ(
heap)」と呼ばれるメモリ領域から便宜的に割り付けられる。通常のプログ
ラミング・モデルのときに、例えば、ユニックス(Unix)システム上で実行
するCプログラムの場合に、異なるプログラムが相互にデータを破壊できないよ
うに、通常、処理当たり1ヒープが存在する。そこで、各メモリ・バッファは、
それが割り付けられたヒープに復帰する必要がある。
【0039】 本発明による機構は、メモリ・バッファが割り付けられたときに空きであって
(プライベート)、従って破壊される恐れのあるバッファが活性状態でないとい
うことを使用することである。
【0040】 本発明は、非推論的に実行したジョブが共有メモリ位置に保持された変数の状
態を変更できる必要があるので、通常、変数に対してカスタマイズされないこと
を理解すべきである。従って、通常、変数の推論状態は、中間位置に一時的にス
トアされ、かつこれらがコミット時に非中間位置に変換される際に、中間位置か
ら実位置に転送される。
【0041】 推論的に実行したジョブが、新しいメッセージ、信号又は記録/オブジェクト
のみを除き、どのような変数状態も発生しないときは、依存性チェックを実行す
る何らかの機構を省略することができる。これは、割り付けを推論的に行うとし
ても、メモリ・バッファを一度に1ジョブのみに割り付けることができるためで
ある。これは、通常、付加コードを有する読み出し及び書き込み命令を備えるこ
とにより、依存性チェックを行うソフトウェア実現の推論のために重要である。
【0042】 シングル・プロセッサ・システム用に書かれたアプリケーション・ソフトウェ
アを標準的なマルチプロセッサ環境に移行して再使用しようとするときは、再コ
ンパイル等によりアプリケーション・ソフトウェアを変換してもよい。例えば、
逐次的にプログラムされたアプリケーション・ソフトウェアは、依存性チェック
用のコード、及びジョブの適正なフラッシュ即ちロール・バックを可能にするよ
うに変更した変数のコピーをストアし、次いでソフトウェアを再コンパイルする
コードを含め、推論的な実行をサポートする適当なコードを付加することにより
、自動的に変更されてもよい。更に、標準的なマルチプロセッサ・システムのオ
ペレーティング・システム又は仮想マシンは、推論的な実行をサポートするよう
に変更されてもよい。例えば、依存性チェック用のコードを実行しているときに
依存性を検出した場合は、関連するジョブをフラッシュするオペレーティング・
システム/仮想マシンに制御を渡してもよい。
【0043】 図2は、本発明による推論的に実行したジョブにより発生した結果を処理する
方法の概要フロー・チャートである。以下のシーケンスのステップは、コンピュ
ータ即ちプロセッサ・システムの要素により、実行可能とされる。種々のステッ
プは、特殊化されたハードウェアにより、複数のプロセッサにより実行されるプ
ログラム命令により、又は両者の組み合わせにより、実行され得ることを認識す
べきである。ステップ101において、複数のジョブを推論的に並列に実行し、
かつプログラミング・モデルにより許容される順序に従い、コミット優先順位を
連続的に複数のジョブに、一度に1つにより、割り当てる。例えば、全体的な生
成順序に従って、ジョブがコミットされ、即ちリタイヤされる。ステップ102
において、推論的に実行したジョブの結果を保持するためにプライベート・メモ
リ・バッファを推論的に割り付け、またステップ103において、推論結果を割
り付けメモリ・バッファに書き込む。ステップ104に示されているように、実
行中、データ変数アクセスについて依存性チェックを行う。推論的に実行したジ
ョブに関して依存性が検出されず(N)、推論的に実行したジョブに最終的なコ
ミット優先順位を割り当てているときは、I/O装置に、対応するメモリ・バッ
ファに対するポインタを転送する(ステップ105)。他方、依存性が検出され
たときは(Y)、対応するジョブをフラッシュすると共に、割り付けメモリ・バ
ッファを割り付け解除して(ステップ106)、ジョブの実行を再び開始する(
101に戻る)。
【0044】 図3は、本発明の好ましい実施例による簡単な処理システムを示す概要図であ
る。この処理システムは、ネットワーク・コントローラ10の形式にあるI/O
装置、実行パイプライン30−1〜30−2、依存性チェッカ35及びメイン・
メモリ40を備えている。標準的なネットワーク・コントローラ10の1例は、
AMD PC net−FASTチップ(AM79C971)のようなイサーネ
ット・コントローラである。ネットワーク・コントローラ10は、通常、着信メ
ッセージ、発信メッセージ及び信号を処理する送信機部及び受信機部を有する。
受信機部は、着信メッセージをストアする多数の受信バッファ41、及びこれら
のバッファに対するポインタをストアするように対応する受信メモリ・リング4
2を含む、即ち関連される。通常、ジョブは、プロセッサのうちの一つにおいて
、定期的に、又は新しいメッセージが到着したときの割り込み時に、起動されて
、ネットワーク・コントローラ10により受信バッファ41に書き込まれたメッ
セージに対するポインタについて受信リング42をチェックする。メッセージに
対するポインタが発見されたときは、ジョブ信号を生成し、かつプロセッサのう
ちの1つによる実行のために、他のジョブ信号と共に、スケジュールする。図3
には2プロセッサのみを示しているが、並列ジョブ処理のために2プロセッサ以
上を使用することが可能なことは、明らかとすべきである。
【0045】 推論メッセージの「送出」のために、好ましくは、メイン・メモリ40内に共
通プールのプライベート・メモリ・バッファが存在し、これらのバッファは、推
論的に実行したジョブ、及びフリー・バッファに対する(通常、メモリ・アドレ
スの形式にある)ポインタの中央リストにより発生した他の信号と共に、メッセ
ージを保持するために使用される。都合のよいことに、各プロセッサ30は、共
通プールにおけるフリー・バッファに対するそれ自身のいわゆる複数のポインタ
の「フリー・リスト」32を有し、従って共通プールのバッファを、多数の小さ
なプライベート・プール45−1及び45ー2のいわゆる送信バッファに論理的
に分割する。小専用プール45−1及び45−2は、フリー・リスト及びポイン
タの中央リストを適当に変化させることにより、小プール内のハイ又はローによ
るウォータマーク(watermark)により、開放バッファから共通バッフ
ァに、より多くのバッファを満たすことが可能とされる。
【0046】 フリー・リスト32−1及び32−2は、それぞれプロセッサ30−1〜30
−2内の、又はメイン・メモリ40に割り付けられた物理リストである。
【0047】 推論的に実行したジョブにより発生した新しいメッセージ用のメモリ・バッフ
ァの推論的な割り付けは、対応するプロセッサ30に関連したポインタのフリー
・リスト32の先頭を考慮して行うことが可能とされる。フリー・リスト32の
先頭エントリにストアされたポインタは、割り付けられたメモリ・バッファを指
示し、またメッセージは、割り付けられたバッファに推論的に書き込まれる。い
わゆる「次のポインタ」は、フリー・リストにおける次のエントリを指示に対す
るポインタに進められる。
【0048】 推論が失敗のときは、フリー・リストの先頭に対する「次のポインタ」を戻す
ことにより、割り付けられたメモリ・バッファを割り付け解除する。推論が成功
のときは、フリー・リストの先頭エントリにストアされたポインタは、コミット
時に、フリー・リスト32からメイン・メモリ40内の送信メモリ・リング46
に転送され、次いで「次のポインタ」により指示されたエントリがフリー・リス
トの新しい先頭となるように、リストから移動される。
【0049】 メモリ・リング46は、都合よいことに、プロセッサ30及びネットワーク・
コントローラ10により共有されたメモリに割り付けられたデスクリプタ・リン
グとして構築される。実際のメッセージ送出は、コミット時に対応するプロセス
30のフリー・リスト32からデスクリプタ・リング46にデスクリプタを転送
することにより、開始される。各デスクリプタは、好ましくは、a)メッセージ
・バッファ(実際のポインタ)に対するアドレス、b)メモリ・バッファの長さ
、及びc)バッファの状態を表示するステータス情報を含む。例えば、ネットワ
ーク・コントローラ10は、有効なデスクリプタ用のデスクリプタ・リングを定
期的にポーリングする。ネットワーク・コントローラ10は、有効なデスクリプ
タを見付けると、デスクリプタのアドレス・フィールドにより指示されたメモリ
・バッファにストアされているメッセージを送出する。
【0050】 デスクリプタ・リングを使用してバッファ管理上の一般的な情報のために、A
MD PCnet−FASTチップAM79C971のデータ・シート58〜6
3頁を参照する。
【0051】 プロセッサ当たり1プールを使用することは、フラッシュ時にバッファを復帰
させる非常に簡単な手順−バッファの割り付けを与える最適化であり、またバッ
ファの復帰は、並列にいくつかのプロセッサにより実行可能とされ、また同期は
、共通プールをアクセスするために必要とされない。加えて、復帰したバッファ
は、同一プロセッサにより再使用され、プロセッサ当たり1データが存在すると
きに、高いキャッシュ・ヒット率に帰結する。
【0052】 図4は、本発明の他の好ましい実施例による処理システムを示す概要図である
。この処理システムは、基本的に、ジョブ信号スケジューラの形式にあるI/O
装置10、及び処理ユニット50を備えている。
【0053】 ジョブ信号スケジューラ10は、入出力ユニット11、ジョブ信号メモリ12
、ポインタ・メモリ13、メモリ・インターフェース14、TPUユニット(プ
ロセッサ・ユニットへの)15、FPUユニット(処理ユニットからの)16及
び制御ユニット17を含む。ジョブ信号スケジューラ10は、処理ユニット50
からと共に外部ユニットからのジョブ信号を受け取り、処理のためにジョブ信号
をスケジュールする。
【0054】 入出力ユニット11は、地域プロセッサ(regional process
ors)及び他の周辺装置のような外部ユニットからジョブ信号を受け取って、
これらをメモリ・インターフェース14を介してジョブ信号メモリ12に分配す
る。外部ユニットからのジョブ信号は、通常、外部事象を発生源としているので
、システムは事象駆動されていると、みなしてもよい。ジョブ信号メモリ12は
、特殊目的メモリか、又は処理ユニットのメイン・メモリ40に割り付けられる
。いずれの場合も、ジョブ信号メモリは、スケジューラ10及び処理ユニット5
0により共有される。ジョブ信号メモリは、ジョブ信号、及び外部ユニットに向
けられた通信メッセージをストアする1プールのメモリ・エレメントに適合する
。ジョブ信号スケジューラ10は、好ましくは、信号そのものに代わって、ジョ
ブ信号及び通信メッセージに対するポインタ上でその動作の大部分を実行する。
従って、各ジョブ信号は、ジョブ信号メモリ12内のメモリ・エレメントに対す
るポインタに関連され、対応するジョブ信号をジョブ信号メモリ12に書き込む
ときは、対応するポインタをメモリ・インターフェース14を介してポインタ・
メモリ13に送出する。
【0055】 図4において、単線は、概要的にポインタ信号Pを表し、また二重線はジョブ
信号/通信メッセージS又はデータ信号Dを表す。
【0056】 ポインタ・メモリ13は、通常、多数のメモリ・キュー(図4に点線により表
す)に分割される。単なる一つの代わりに、いくつかのキューを使用することに
より、複数の優先順位を処理することが可能であり、異なる優先順位レベルを有
するポインタを異なるメモリ・キューにストアする。ジョブ信号スケジューラ1
0に新しいジョブ信号が到達すると、ジョブ信号のヘッダに含まれる優先順位レ
ベル情報を解析して、対応するポインタを配置すべきメモリ・キューを認識する
。次に、ジョブ信号メモリ12にジョブ信号Sを書き込み、かつポインタ・メモ
リ13に選択したキューにポインタPを配置する。通常、ポインタ・メモリ13
内のキューは、優先順位の順序によりサービスするファースト・イン・ファース
ト・アウト(FIFO)として編成される。
【0057】 到着の順にあるポインタPを優先順位レベル情報に従ってストアすることによ
り、スケジューリング順序がポインタ・メモリ13内に得られる。処理ユニット
50が新しいジョブ信号を受け取ることができるときは、最高の優先順位レベル
のメモリ・キューの中で最も古いポインタPがTPUユニット15に転送される
ことを制御ユニット17が確認する。TPUユニット15は、関連ジョブをフェ
ッチするためポインタPにより表すジョブ信号メモリ12内のメモリ・エレメン
トを読み出し、取り出したジョブ信号Sを処理ユニット50に送出する。このよ
うに、ジョブ信号メモリ12内のジョブ信号をポインタ・メモリ13内のスケジ
ューリング順序に従って処理ユニット20に転送する。
【0058】 ジョブ信号メモリ12及びポインタ・メモリ13は、好ましくは、共通メモリ
、例えばメイン・メモリ40内に実施される。
【0059】 ジョブ信号スケジューラ10から処理ユニット50に高い優先順位レベルのジ
ョブ信号を送出するのであれば、ジョブ信号スケジューラ10における割り込み
処理は、好ましくは、処理ユニット50におけるジョブの割り込みを開始できる
必要がある。
【0060】 処理ユニット50は、好ましくは、一度に1優先順位レベルのみのジョブ信号
を処理する。ジョブ信号スケジューラ10からの高い優先順位レベルの信号は、
それより低いレベルの信号に割り込みをする。例えば、ジョブ信号スケジューラ
10は、割り込み要求を処理ユニット50に送出することによって割り込みを開
始することができ、そこで処理ユニットは、現在実行中のジョブに割り込みをす
ることになる。
【0061】 処理ユニット50は、ジョブ信号キュー20、複数の処理エレメント/プロセ
ッサ30−1〜30−4、データの依存性を処理して推論的に実行したジョブの
結果を一時的にストアする組み合わせ依存性チェッカ及び書き込みキュー配列装
置35、そしてプログラム・ストア43及びデータ・ストア44に分割されたメ
モリ・システム40を含む。この例では、プロセッサ・エレメント30−1〜3
0−4は、好ましくは、実行パイプラインの形式にある。従って、以下、処理エ
レメントを実行パイプラインと呼ぶ。
【0062】 ジョブ信号スケジューラ10からのジョブ信号は、ジョブ信号をストアするた
めに多数のメモリ位置を有するジョブ・キュー20にバッファリングされる。各
ジョブ信号は、ジョブ・キュー20のそれぞれのストア位置に追加的な情報と共
にストアされる。
【0063】 一般的に、各ジョブ信号は、ヘッダ及び信号本体を備えている。ヘッダは、通
常、管理情報に加えて、プログラム・ストア43内のソフトウェア・コードに対
するポインタを含み、ジョブ信号の本体は、対応するジョブの実行に必要な入力
オぺランドを含み、これによって、一般的に、内蔵されたジョブ信号を作成する
。ソフトウェア・コードは、好ましくは、1以上のテーブル・ルックアップを介
して指示される。これは、一般的に、ポインタがルックアップ・テーブル・エン
トリを実際に指示し、これがまたソフトウェア・コードを指示することを意味す
る。この信号本体は、地域プロセッサ又は他のプロセッサのような外部ユニット
からの信号メッセージであってもよい。
【0064】 一つのジョブは、信号ヘッダにより指定された命令ストリームと定義されても
よく、かつこのジョブは、ジョブ信号の受け取りにより開始し、エンド・ジョブ
・ルーチンの呼び出しにより終了する。しかしながら、ジョブ信号そのものは、
通常、プログラム・ストア43にストアされるソフトウェア・コードの命令、及
びこれらの命令の実行に必要とされるオぺランドに対する単なるポインタのみで
あって、いかなる命令も含まないことに注意すべきである。
【0065】 実行パイプライン30−1〜30−4は、好ましくは、ジョブ・キュー20内
の異なるメモリ位置からジョブ信号を「フェッチ」して異なる複数ジョブを並列
に独立的に実行する。実行パイプラインが空きであり、新しいジョブを実行し始
めるときは、ジョブ・キュー20を調べて未割り付けジョブ信号を見つけ出し、
未割り付けジョブ信号をパイプラインに割り付ける。次いで、ジョブ信号を実行
パイプラインにより処理し、対応するジョブを実行する。並列ジョブを実行中の
全期間で、ジョブ・キュー20における1ジョブ信号のみがコミット位置にあっ
て、ジョブ信号を割り当てた実行パイプラインが対応するジョブをコミット又は
リタイアするのを可能にする。他の実行パイプラインにあるジョブは、推論的に
実行され、依存性チェッカ35によりデータ依存性が検出されるときは、フラッ
シュされてもよい。
【0066】 プロトコルにより情報フローを管理するシステムに対する概要的な必要条件は
、関連するいくつかの事象を受け取った順序により処理しなければならないこと
である。これはシステムに不変であって、どのようにシステムを実施するかは問
題ではない。ジョブ間のコミット順序は、通常、処理コアへの到着により定義さ
れ、概して変更されることはない。しかしながら、異なる優先順位レベルにある
複数のジョブ信号を処理する処理システムでは、処理ユニット50に対する到着
によって同一優先順位レベルにある複数ジョブ間のコミット順序を定義するよう
に、低い優先順位のジョブ信号の前に、高い優先順位レベルのジョブ信号を置く
ことが有用と思われる。
【0067】 一般的に、各実行パイプラインは、プログラム・ストアから複数の命令をフェ
ッチし、これらの命令を実行し、かつメモリの書き戻し及び信号送出を実行する
回路を備えている。本発明により使用可能な特定の実行パイプラインの1例は、
エリクソンAXEディジタル・スイッチング・システム(Ericsson A
XE Digital Switching System)におけるパイプラ
インである。
【0068】 ジョブ・キュー20は、適当な制御ソフトウェア又はハードウェアとの組み合
わせにより、実行パイプライン30−1〜30−4にジョブ信号を割り当て、推
論的に実行して完了したジョブのトラッキングを確保し、コミット優先順位をジ
ョブ信号に連続的に割り当て、かつコミットしたジョブ信号を除くために必要と
されるプロトコルを管理する。
【0069】 ジョブ・キュー20は、通常、多数のストレージ位置を有する通常のキューで
ある。1例として、ジョブ・キュー20は、メモリの所定部分をそれぞれ固有の
自己メモリ・アドレスを有する多数のストレージ位置に論理的に分割することに
より、共通メモリに実施可能である。一般的に、ジョブ・キュー20における各
ストレージ位置を、例えば下記の表1に説明しているような多数のフィールドに
分割する。
【0070】
【表1】
【0071】 フィールド「Valid」は、ストレージ位置が有効なジョブ信号を含む否か
を表示するために使用される。ジョブ信号スケジューラ10からジョブ信号を受
け取ったときは、これをジョブ・キュー20の最初の空き位置、即ち有効フラグ
がセットされていない位置に配置する。次いで、有効フラグをセットして「信号
」フィールドが現在有効なジョブ信号を含み、かつその位置が占有されているこ
とを表示する。
【0072】 フィールド「済み(Taken)」は、ジョブ信号をパイプラインに割り当て
たか否かを表示するために使用され、ジョブ・キュー20内のストレージ位置に
おけるジョブ信号が実行パイプラインに割り当てられたときは、その位置に対す
る「済み」フラグがセットされてジョブ信号が割り当てられたことを表示する。
【0073】 フィールド「終了(Finished)」は、ジョブを推論的に実行して完了
したことを表示するために使用され、かつそのフィールド「パイプid」及び「
ジョブid」は、そのパイプにおけるパイプの識別、及びジョブ信号及び/又は
対応するジョブの識別を与えたことを表示するために使用される。パイプライン
が最初のジョブに対するジョブ終了ルーチンを実行したときは、ジョブを実行し
て完了し、かつコミットするべくレディー(準備完了状態)であることを知らせ
るために、「終了」フラグをセットする。必要ならば、ここでパイプラインは、
第2のジョブ信号をフェッチするべくレディーとなる。最初のジョブは、問題と
するパイプのジョブid「1」に割り当てられ、またパイプにおいて実行される
べき第2のジョブは、ジョブid「2」に割り当てられる。パイプがコミット優
先順位を受け取る前に、第2のジョブを終了すれば、第3の推論ジョブが実行可
能となり、以下同様となる。一般的に、パイプ当たりのジョブ数と複雑さとの間
の妥協点が作成され、実際では、パイプ当たりのジョブ数が制限される。しかし
ながら、以下では、各パイプラインは、一度に1ジョブのみを処理するとみなさ
れる。
【0074】 推論的な実行用に適応された処理システムにおいて、ジョブは、一般的に下記
の状態、即ち「開始していない」、「開始した」及び「終了した」であり得る。
これらの状態は、ジョブ・キュー20において異なる方法により符号化可能とさ
れると共に、表1のフィールド「有効」、「済み」及び「終了」は、これらのジ
ョブ状態を符号化する1方法の単なる例であることを理解すべきである。
【0075】 ジョブ・キュー20は、好ましくは、ジョブ・キュー20におけるどのストレ
ージ位置がコミット位置にあるのかを指示するポインタに関連される。コミット
位置にあるジョブ信号は、コミット優先順位を有し、このジョブ信号を処理する
実行パイプラインを動作可能状態にしてメモリ書き戻し及び信号送出のコミット
を実行する。ジョブ信号がコミット位置に移行すると、対応するパイプラインは
、全て書き込み動作及びジョブのための信号送出をコミットし始める。ジョブを
実行して完了し、かつ全ての書き込み及び信号送出をコミットしたときは、「有
効」フラグをクリアすることにより、その位置を開放し、かつ通常の手段により
ジョブ・キュー20をステップしてコミット位置を新しい位置に移動し、これに
よって、コミット優先順位をジョブ・キュー内のジョブ信号に連続的に割り当て
る。
【0076】 例えば、情報をジョブ・キュー・フィールドに書き込み、かつコミット優先順
位をジョブ信号に連続的に割り当てるように、ジョブ・キュー20を処理する機
能は、好ましくは、例えばマイクロ・コード命令プログラム又はアッセンブラ・
プログラムの形式にあるソフトウェアにより、制御される。更に、フラッシュを
処理すること、書き込みキュー配列を制御すること、及びスケジューリング機構
を制御することのように、処理システムにおける他の機能は、ソフトウェアによ
り実施されてもよい。
【0077】 依存性チェッカ35は、概要的に、実行パイプライン30−1〜30−4に関
連した1以上の読み出しバッファRBを使用することにより、実施される。パイ
プラインがデータ・ストア44からデータをフェッチするときは、アドレス又は
複数アドレスの読み出しは、対応する読み出しバッファにバッファされる。コミ
ット優先順位により実行パイプラインがデータ・ストア44に可変データDの書
き戻しを実行するときは、データ・ストアに対する書き込みアドレスを読み出し
バッファRB内の読み出しアドレスとアドレスと比較してジョブ間にデータの依
存性があるか否かを調べる。この比較は、概してアドレス比較器により実行され
る。推論的に実行したジョブにより読み出されたデータがジョブのコミットによ
り変更されているときは、データ依存性が存在しており、推論的に実行した、又
は実行しているジョブをフラッシュし、かつ再び開始する必要がある。
【0078】 推論的に実行したジョブにより提案されたデータ・ストアの変更は、書き込み
キュー配列35にログ記録されるが、しかしジョブがコミット優先順位を獲得す
るまで、データ・ストア44に書き込みはしない。書き込みキュー配列35は、
好ましくは、多数の個別的な書き込みキューを備えており、1書き込みキューW
Qが実行パイプライン30−1〜30−4のそれぞれに割り付けられる。高いパ
フォーマンスのために、書き込みキューは、高速だが、比較的に小さなメモリで
あるキャッシュ・メモリとして、通常、実施される。一般的に、推論的なジョブ
がコミット優先順位を獲得するときは、問題とするジョブに属する書き込みキュ
ー・エントリは、データ・ストア44に直ちに書き込まれる。しかしながら、実
行中のコミット・ジョブは、一般的に、その書き込みキューにそのデータをスト
アしないが、しかし依存性チェックを可能にするように、対応するメモリ・アド
レスをアドレス比較器に単純に転送する。
【0079】 代替として、書き込みキュー配列35は、例えば、組み合わせ依存性チェッカ
及び書き込みキューを開示している国際特許出願WO 88/02513に説明
されているように、全実行パイプラインに共通する単一中央化書き込みキューの
形式にある。
【0080】 ジョブ信号は、ラウンド・ロビン形式により実行パイプラインに概して割り当
てられることを理解すべきである。ラウンド・ロビンでは、パイプラインが段階
的に横行する円形ループに配列されているとみなし得る。例えば、この配列は、
パイプライン及び書き込みキュー側でコミット位置の管理を非常に簡単化する。
ジョブ・キュー20における次のジョブ信号をコミット位置に移動するときは、
前のコミット・パイプラインと比較されるループ内の次のパイプラインとして、
対応する実行パイプラインを単純に認識し、認識したパイプライン専用の書き込
みキューWQにストアされた結果をコミットする。
【0081】 本発明によれば、推論的に発生したジョブ信号及び通信メッセージは、FPU
ユニット16及びメモリ・インターフェース14を介してジョブ信号メモリ12
に直接書き込まれる。対応するジョブ信号及びメッセージを見付けることができ
るジョブ信号メモリ12内のメモリ領域に対するポインタのみを書き込みキュー
WQに一時的にストアし、コミット時にFPUユニット16及びメモリ・インタ
ーフェース14を介してポインタ・メモリ13に転送する。
【0082】 抽出された特別の並列性に加えて、高価な書き込みキュー・キャッシュにおけ
るメモリ領域を節約する。更に、実行パイプラインは、推論モードにおいて発生
したジョブ信号及び通信メッセージを転送することができる。これは、ジョブ信
号データの送信を時間上で引き延ばし、処理ユニット50とジョブ信号スケジュ
ーラ10との間のインターフェースに対する帯域幅要求を低くする結果となるこ
とを意味する。更に、ポインタのみを転送するので、コミット時に書き込みキュ
ーが高速にオフ・ロードされる。
【0083】 ジョブ信号スケジューラ10は、ジョブ信号メモリ12内の空きメモリ・エレ
メントに対するポインタを処理ユニット50に送出して、1プールの空きポイン
タを構築する。実行パイプライン30−1〜30−4のそれぞれは、概してこの
ような多数の空きポインタEPが割り付けられる。各実行パイプラインは、割り
付けられたポインタにより指示されたメモリ・エレメントのうちの1つに推論的
に、推論的に実行したジョブにより発生した新しいジョブ信号/通信メッセージ
Sを書き込み、実行パイプラインに接続された書き込みキューWQに、ジョブ信
号/通信メッセージSを書き込むメモリ・エレメントを指示するポインタPをス
トアする。信号送出をコミットするために実行パイプラインに優先順位を割り当
てると、書き込みキューWQからポインタ・メモリ13内の適当なメモリ・キュ
ーに又は外部ユニットに転送するために入出力ユニット11に、ポインタPを転
送する。新しいジョブ信号の場合に、対応するジョブ信号Sにおける優先順位レ
ベル情報に基づいてポインタ・メモリ13内の適当なメモリ・キューを認識し、
かつジョブ信号と同一の優先順位レベルのメモリ・キューにポインタPを書き込
む。ポインタ・メモリ13内のメモリ・キューは、FIFOキューとして構成さ
れ、またスケジューリング順序は、優先順位の順序によりサービスされるので、
ポインタ・メモリにスケジューリング順序が確立される。
【0084】 ジョブ信号スケジューラ10は、スケジューラがそれ以上ポインタを必要とし
なければ直ちに、ポインタFPをTPUユニット15を介して処理ユニット50
に送出することにより、空きポインタのプールをフルに保持する。
【0085】 1回で完全なジョブ信号又は完全な通信メッセージを書き込む必要性はない。
大きな信号は、例えば、処理ユニット50とジョブ信号スケジューラ10との間
のバス・インターフェースのブロッキングを防ぐために、複数の断片により書き
込まれてもよい。そのときは、処理ユニット50は、バースト間のアドレスを増
加して、各バーストの開始で増加したアドレスを送出する必要がある。
【0086】 以上、実行パイプラインは、それぞれ命令実行用の自己専用のリソースを有す
る個別的な構成要素であるとして説明した。しかしながら、一般的に、命令実行
において、実行パイプラインにおける多くのリソースがフルに使用されることは
ない。そこで、リソースが複数のパイプ間で共有可能となり、要求又は時多重化
方式により、リソースに対する実行パイプ・アクセスを実行する。高度のリソー
ス共有を実施する技術は、同時マルチ・スレッディングである。同時マルチスレ
ッディングでは、殆ど全てのリソースが共有され、各パイプライン専用のリソー
スは、プライベート・プログラム・カウンタと、命令レジスタ、及び物理レジス
タにおける論理レジスタ・ナンバー間のプライベート・マッピングとに限定され
る。
【0087】 更に、ポインタは、ジョブ信号メモリ内のメモリ・エレメントを直接、参照す
る必要はないが、しかし、1以上のテーブル・ルックアップによりジョブ信号メ
モリ領域を参照することができることも理解すべきである。
【0088】 更に、アドレス比較方法を参照して依存性チェックを説明した。しかしながら
、代替として、依存性チェックは、各処理ユニットがメイン・メモリ内の変数の
使用をマークし、かつ依存性の衝突がマーキングに基づいて検出されるマーカ方
法により、達成されてもよい。
【0089】 以上で説明した実施例は、例として単に説明され、本発明は、これに限定され
ないことを理解すべきである。更なる修正、変更、及び開示され、かつ特許請求
された基本的に内在する原理を保持する改良は、本発明の範囲内である。
【図面の簡単な説明】
【図1】 本発明による概要的な処理システムの簡単な図である。
【図2】 本発明による推論的に実行したジョブにより発生した結果を処理する方法の概
要フロー・チャートである。
【図3】 本発明の好ましい実施例による処理システムを示す概要図である。
【図4】 本発明の他の好ましい実施例による処理システムを示す概要図である。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SL,SZ,TZ,UG,ZW ),EA(AM,AZ,BY,KG,KZ,MD,RU, TJ,TM),AE,AL,AM,AT,AU,AZ, BA,BB,BG,BR,BY,CA,CH,CN,C R,CU,CZ,DE,DK,DM,EE,ES,FI ,GB,GD,GE,GH,GM,HR,HU,ID, IL,IN,IS,JP,KE,KG,KP,KR,K Z,LC,LK,LR,LS,LT,LU,LV,MA ,MD,MG,MK,MN,MW,MX,NO,NZ, PL,PT,RO,RU,SD,SE,SG,SI,S K,SL,TJ,TM,TR,TT,TZ,UA,UG ,UZ,VN,YU,ZA,ZW (72)発明者 ヨンソン、ステン、エドワード スウェーデン国 ファルスタ、リイスビク スガタン 3 (72)発明者 エゲランド、テルイエ スウェーデン国 バルムド、ブヨルクビク ス アレベーグ 2 Fターム(参考) 5B013 DD00 DD05 5B060 AA07 AC19 KA02 5B077 BA02 DD22 5B098 AA05 AA09 AA10 GA03 GD03 GD22 【要約の続き】 ることができる。

Claims (26)

    【特許請求の範囲】
  1. 【請求項1】 プロセッサ・システムにおいて、 ‐複数のジョブを推論的に実行する多数のプロセッサ(30)と、 ‐一度に1ジョブにより、複数のジョブに対してコミット優先順位を割り当て
    る手段と、 ‐推論的に実行したジョブの結果を保持するためにプライベート・メモリ・バ
    ッファを推論的に割り付ける手段と、 ‐コミット優先順位が前記推論的に実行したジョブに割り当てられたときは、
    前記割り付けられたプライベート・メモリ・バッファを指示するポインタを入出
    力装置(10)に転送する手段と を備えた処理システム。
  2. 【請求項2】 推論的に実行したジョブの結果は、通信メッセージ、オペレ
    ーティング・システム・コール又は新しいジョブを表すジョブ信号の形式にある
    請求項1記載の処理システム。
  3. 【請求項3】 前記入出力装置(10)は、入出力プロセッサ、ネットワー
    ク・コントローラ、イサーネット回路又はジョブ信号スケジューラである請求項
    1記載の処理システム。
  4. 【請求項4】 前記プライベート・メモリ・バッファは、前記入出力装置(
    10)が前記転送されたポインタにより前記結果をアクセスできるように、前記
    処理システムのメイン・メモリ(40)又はプロセッサ(30)により共有され
    た他のメモリと、前記入出力装置(10)とに存在する請求項1記載の処理シス
    テム。
  5. 【請求項5】 各プロセッサは、自己プライベート・プール(45)のバッ
    ファを有し、このプライベート・プールに対して、又は、から複数のメモリ・バ
    ッファを割り付ける、又は割り付け解除する請求項1記載の処理システム。
  6. 【請求項6】 更に、前記プライベート・プール(45)におけるハイ又は
    ローのウォータマークにより、プライベート・プール(45)のバッファを共通
    プールのバッファからの更なるバッファにより補充し、かつ前記プライベート・
    プール(45)からのバッファを前記共通プールに開放する手段を備えている請
    求項5記載の処理システム。
  7. 【請求項7】 各プロセッサは、プール(45)のメモリ・バッファ内に空
    きメモリ・バッファに対するポインタの自己リスト(32)を有し、かつ前記バ
    ッファ割り付け手段は、前記対応するプロセッサのリストの先頭からポインタを
    フェッチすることにより、推論的に実行したジョブの結果を保持するためのメモ
    リ・バッファを割り付ける請求項1記載の処理システム。
  8. 【請求項8】 更に、 ‐前記推論的に実行したジョブとコミット優先順位を有するジョブとの間の依
    存性を検出する手段(35)と、 ‐検出された依存性に応答して前記推論的に割り付けられたメモリ・バッファ
    を割り付け解除する手段と を備えた請求項1記載の処理システム。
  9. 【請求項9】 前記転送する手段は、前記推論的に実行したジョブにコミッ
    ト優先順位を割り当てるときは、メモリ手段(46)に前記ポインタを書き込み
    、前記入出力装置(10)によりポインタについて前記メモリ手段をチェックす
    る手段を備えている請求項1記載の処理システム。
  10. 【請求項10】 前記入出力装置(10)は、ポインタについて前記メモリ
    手段(46)を定期的にポーリングするネットワーク・コントローラであり、前
    記ネットワーク・コントローラは、ポインタを見出したときは、前記ポインタに
    関連した前記プライベート・メモリ・バッファから取り出した通信メッセージを
    送出する請求項9記載の処理システム。
  11. 【請求項11】 前記メモリ手段(46)は、前記処理システムのメイン・
    メモリ(40)に割り付けられたリング構造であり、かつ前記ポインタは、前記
    リング構造(46)の位置に書き込まれる請求項9記載の処理システム。
  12. 【請求項12】 更に、前記ポインタをメモリ手段(WO)に推論的に書き
    込む手段を備え、かつ前記転送手段は、コミット優先順位が前記推論的に実行し
    たジョブに割り当てられたときに、前記メモリ手段(WO)から前記入出力装置
    (10)に前記ポインタを転送する請求項1記載の処理システム。
  13. 【請求項13】 前記メモリ手段(WO)は、前記処理システムのメイン・
    メモリ(40)にハードウェア・キューとして実施された、又は割り付けられた
    、書き込みキューである請求項12記載の処理システム。
  14. 【請求項14】 ‐前記入出力装置(10)は、前記多数のプロセッサによ
    り処理するジョブ信号スケジューラ・スケジューリング・ジョブ信号であり、 ‐前記割り付け手段は、プライベート・メモリ・バッファをジョブ信号メモリ
    (12)を推論的に割り付けて推論的に実行したジョブにより発生した新しいジ
    ョブ信号を保持し、前記対応するポインタは、メモリ手段(WO)に推論的に書
    き込まれ、 ‐前記転送手段は、コミット優先順位が前記推論的に実行したジョブに割り当
    てられたときは、前記メモリ手段(WO)から前記入出力装置(10)に転送し
    て前記新しいジョブ信号のスケジューリングを可能にさせる 請求項1記載の処理システム。
  15. 【請求項15】 各ジョブ信号及びその対応するポインタは、優先順位レベ
    ル情報に関連され、かつ前記入出力装置(10)は、 ‐到着の順序及び前記優先順位レベル情報に従って複数のポインタをストアし
    てスケジューリング順序を得るポインタ・メモリ(13)と、 ‐前記ポインタ・メモリ(13)におけるスケジューリング順序に従い前記多
    数のプロセッサ(30)により処理するために、前記ジョブ信号メモリ(12)
    からのジョブ信号を転送する手段と を備えた請求項14記載の処理システム。
  16. 【請求項16】 前記転送手段は、前記ポインタ・メモリ(13)に前記ポ
    インタを転送して前記ポインタを前記スケジューリング順序に配置する請求項1
    5記載の処理システム。
  17. 【請求項17】 処理システムにおける結果を処理する方法において、 ‐並列に複数のジョブを推論的に実行するステップ(101)と、 ‐一度に1ジョブにより、前記複数のジョブにコミット優先順位を割り付ける
    ステップと、 ‐プライベート・メモリ・バッファを推論的に割り付けて推論的に実行したジ
    ョブの結果を保持するステップ(102)と、 ‐コミット優先順位が推論的に実行したジョブに割り付けられたときに、入出
    力装置(10)に割り付けメモリ・バッファを指示するポインタを転送し、前記
    入出力装置が転送されたポインタにより前記対応する割り付けメモリ・バッファ
    をアクセスするステップ(105)と を備えた結果を処理する方法。
  18. 【請求項18】 更に、 ‐推論的に実行したジョブとコミット優先順位を有するジョブとの間の依存性
    を検出するステップ(104)と、 ‐推論的に実行したジョブについて依存性が検出されたときは、前記対応する
    推論的に割り付けられたメモリ・バッファを割り付け解除するステップ(106
    )と を備えた請求項17記載の結果を処理する方法。
  19. 【請求項19】 前記推論的に実行したジョブの結果は、通信メッセージ、
    オペレーティング・システム・コール又は新しいジョブを表すジョブ信号の形式
    にある請求項17記載の結果を処理する方法。
  20. 【請求項20】 前記入出力装置(10)は、入出力プロセッサ、ネットワ
    ーク・コントローラ、イサーネット回路又はジョブ信号スケジューラである請求
    項17記載の結果を処理する方法。
  21. 【請求項21】 前記転送する手段は、前記推論的に実行したジョブにコミ
    ット優先順位を割り当てるときは、メモリ手段に前記ポインタを書き込み、前記
    入出力装置によりポインタについて前記メモリ手段をチェックするステップを備
    えている請求項17記載の結果を処理する方法。
  22. 【請求項22】 更に、前記ポインタをメモリ手段(WO)に推論的に書き
    込むステップを備え、かつ前記転送ステップ(105)は、前記推論的に実行し
    たジョブにコミット優先順位を割り当てられたときは、前記メモリ手段(WO)
    から前記入出力装置(10)に前記ポインタを転送することを含む請求項17記
    載の結果を処理する方法。
  23. 【請求項23】 前記推論的に実行したジョブは、多数のプロセッサ(30
    )により実行され、かつ前記方法は、更に、各プロセッサを自己プライベート・
    プール(45)のバッファと関連させるステップを備え、前記プロセッサは、こ
    のプライベート・プールに対して、又は、から複数のメモリ・バッファを割り付
    ける、又は割り付け解除する請求項17記載の結果を処理する方法。
  24. 【請求項24】 処理システムにおいて、 ‐複数のジョブを推論的に実行する多数のプロセッサ(30)と、 ‐一度に1ジョブにより、複数のジョブに対してコミット優先順位割り当てる
    手段と、 ‐前記処理システムの前記メイン・メモリ(40)内にプライベート・メモリ
    ・バッファ推論的に割り付けて、前記推論的に実行したジョブにコミット優先順
    位を割り当てられたときは、推論的に実行したジョブにより発生した新しい記録
    又はオブジェクトが前記メイン・メモリ(40)内の所定位置にあるように、推
    論的に実行したジョブにより発生した前記新しい記録又はオブジェクトを保持す
    る手段と を備えた処理システム。
  25. 【請求項25】 更に、前記推論的に実行したジョブにコミット優先順位を
    割り当てたときは、前記割り付けられたプライベート・メモリ・バッファを指示
    するポインタを共有メモリに渡す手段を備えた請求項24記載の処理システム。
  26. 【請求項26】 更に、 ‐前記推論的に実行したジョブとコミット優先順位を有するジョブとの間の依
    存性を検出する手段(35)と、 ‐検出された依存性に応答して前記推論的に割り付けられたメモリ・バッファ
    を割り付け解除する手段と を備えた請求項24記載の処理システム。
JP2000582884A 1998-11-16 1999-11-12 多重処理システムにおける改良結果処理方法 Expired - Lifetime JP4608100B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
SE9803901A SE9803901D0 (sv) 1998-11-16 1998-11-16 a device for a service network
SE9803901-9 1999-06-22
SE9902373-1 1999-06-22
SE9902373A SE9902373D0 (sv) 1998-11-16 1999-06-22 A processing system and method
PCT/SE1999/002063 WO2000029941A1 (en) 1998-11-16 1999-11-12 Improved result handling in a multiprocessing system

Publications (3)

Publication Number Publication Date
JP2002530736A true JP2002530736A (ja) 2002-09-17
JP2002530736A5 JP2002530736A5 (ja) 2010-10-14
JP4608100B2 JP4608100B2 (ja) 2011-01-05

Family

ID=26663436

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000582884A Expired - Lifetime JP4608100B2 (ja) 1998-11-16 1999-11-12 多重処理システムにおける改良結果処理方法

Country Status (9)

Country Link
EP (1) EP1131702B1 (ja)
JP (1) JP4608100B2 (ja)
KR (1) KR100437227B1 (ja)
AU (1) AU1437200A (ja)
BR (1) BR9915369A (ja)
CA (1) CA2350466A1 (ja)
DE (1) DE69940784D1 (ja)
SE (1) SE9902373D0 (ja)
WO (1) WO2000029941A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006518058A (ja) * 2002-10-31 2006-08-03 ロッキード マーティン コーポレーション 改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法
WO2013065687A1 (ja) * 2011-11-04 2013-05-10 学校法人 早稲田大学 プロセッサシステム及びアクセラレータ
JP2016509306A (ja) * 2013-01-31 2016-03-24 オラクル・インターナショナル・コーポレイション クラスタにおけるワークシェアリング多重化をサポートするためのシステムおよび方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003263331A (ja) * 2002-03-07 2003-09-19 Toshiba Corp マルチプロセッサシステム
GB2401748B (en) * 2003-05-14 2005-04-13 Motorola Inc Apparatus and method of memory allocation therefor
KR100957060B1 (ko) * 2007-12-12 2010-05-13 엠텍비젼 주식회사 명령어 병렬 스케줄러, 방법 및 그 기록매체
US8572359B2 (en) 2009-12-30 2013-10-29 International Business Machines Corporation Runtime extraction of data parallelism
US9696995B2 (en) 2009-12-30 2017-07-04 International Business Machines Corporation Parallel execution unit that extracts data parallelism at runtime
US8683185B2 (en) 2010-07-26 2014-03-25 International Business Machines Corporation Ceasing parallel processing of first set of loops upon selectable number of monitored terminations and processing second set
KR101603429B1 (ko) * 2014-09-03 2016-03-14 (주)솔투로 빅데이터의 멀티프로세스 분배를 통한 멀티 출력 장치 및 그 방법
US10042773B2 (en) * 2015-07-28 2018-08-07 Futurewei Technologies, Inc. Advance cache allocator

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
US5511172A (en) * 1991-11-15 1996-04-23 Matsushita Electric Co. Ind, Ltd. Speculative execution processor
US5740393A (en) * 1993-10-15 1998-04-14 Intel Corporation Instruction pointer limits in processor that performs speculative out-of-order instruction execution
DE69420540T2 (de) * 1994-01-03 2000-02-10 Intel Corp., Santa Clara Verfahren und Vorrichtung zum Implementieren eines vierstufigen Verzweigungsauflosungssystem in einem Rechnerprozessor
US5875326A (en) * 1997-04-25 1999-02-23 International Business Machines Corporation Data processing system and method for completing out-of-order instructions
US5870597A (en) * 1997-06-25 1999-02-09 Sun Microsystems, Inc. Method for speculative calculation of physical register addresses in an out of order processor
US6240509B1 (en) * 1997-12-16 2001-05-29 Intel Corporation Out-of-pipeline trace buffer for holding instructions that may be re-executed following misspeculation

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6009010568, James S. Mattson Jr., "An Effective Speculative Evaluation Technique for Parallel Supercombinator Graph Reduction", A dissertation submitted in partial satisfaction of the requirements for the degree Doctor of Philos, 1993, pp. 1 − 17, 39 − 82, 206 − 211, US, UNIVERSITY OF CALIFORNIA, SAN DIEGO *
JPN6009010570, Christopher F. Joerg, "The Cilk System for Parallel Multithreaded Computing", Submitted to the Department of Electrical Engineering and Computer Science in partial fulfillment of, 199601, pp. 5 − 7, 31 − 34, US, MASACHUSETTS INSTITUTE OF TECHNOLOGY *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006518058A (ja) * 2002-10-31 2006-08-03 ロッキード マーティン コーポレーション 改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法
WO2013065687A1 (ja) * 2011-11-04 2013-05-10 学校法人 早稲田大学 プロセッサシステム及びアクセラレータ
CN104025045A (zh) * 2011-11-04 2014-09-03 学校法人早稻田大学 处理器系统及加速器
GB2511672A (en) * 2011-11-04 2014-09-10 Univ Waseda Processor system and accelerator
JPWO2013065687A1 (ja) * 2011-11-04 2015-04-02 学校法人早稲田大学 プロセッサシステム及びアクセラレータ
JP2017091589A (ja) * 2011-11-04 2017-05-25 学校法人早稲田大学 プロセッサコア及びプロセッサシステム
US9846673B2 (en) 2011-11-04 2017-12-19 Waseda University Processor, accelerator, and direct memory access controller within a processor core that each reads/writes a local synchronization flag area for parallel execution
US10095657B2 (en) 2011-11-04 2018-10-09 Waseda University Processor, accelerator, and direct memory access controller within a core reading/writing local synchronization flag area for parallel
GB2511672B (en) * 2011-11-04 2020-04-15 Univ Waseda Processor system and accelerator
JP2016509306A (ja) * 2013-01-31 2016-03-24 オラクル・インターナショナル・コーポレイション クラスタにおけるワークシェアリング多重化をサポートするためのシステムおよび方法

Also Published As

Publication number Publication date
KR100437227B1 (ko) 2004-06-23
EP1131702B1 (en) 2009-04-22
KR20010080468A (ko) 2001-08-22
BR9915369A (pt) 2001-08-14
WO2000029941A1 (en) 2000-05-25
DE69940784D1 (de) 2009-06-10
CA2350466A1 (en) 2000-05-25
EP1131702A1 (en) 2001-09-12
AU1437200A (en) 2000-06-05
SE9902373D0 (sv) 1999-06-22
JP4608100B2 (ja) 2011-01-05

Similar Documents

Publication Publication Date Title
US10261835B2 (en) Hardware thread scheduling
US7082601B2 (en) Multi-thread execution method and parallel processor system
US5574939A (en) Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
US7650602B2 (en) Parallel processing computer
JP3139392B2 (ja) 並列処理システム
EP0747816B1 (en) Method and system for high performance multithread operation in a data processing system
US8661230B2 (en) Allocation of counters from a pool of counters to track mappings of logical registers to physical registers for mapper based instruction executions
JPS63113648A (ja) キャッシュ記憶待ち行列
US9213677B2 (en) Reconfigurable processor architecture
EP2187316A1 (en) Gated storage system and synchronization controller and method for multiple multi-threaded processors
WO2003038602A2 (en) Method and apparatus for the data-driven synchronous parallel processing of digital data
US5893159A (en) Methods and apparatus for managing scratchpad memory in a multiprocessor data processing system
JP2002530736A (ja) 多重処理システムにおける改良結果処理方法
WO2000029939A1 (en) A job-parallel processor
JP4608099B2 (ja) ジョブ信号を処理する多数の処理ユニットを有する処理システムにおけるジョブ信号処理方法および処理システム
JP2002530736A5 (ja)
JP2002530735A5 (ja)
JP2002287957A (ja) キャッシュのような構造を使用してcpu設計におけるオペランド・アクセス・ステージを高速化するための方法及び装置
US20100100709A1 (en) Instruction control apparatus and instruction control method
JP2002163121A (ja) 仮想マルチスレッドプロセッサ及びスレッド実行方法
JP3501761B2 (ja) 大規模データパス・アーキテクチャの実行機構
US12112169B2 (en) Register freeing latency
JPH10187464A (ja) マルチスカラ・プログラムを作成する方法およびシステム
CN108536474B (zh) 延迟缓冲器
CA2464506A1 (en) Method and apparatus for the data-driven synchronous parallel processing of digital data

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061012

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090306

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100525

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20100825

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: 20100910

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101008

R150 Certificate of patent or registration of utility model

Ref document number: 4608100

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20131015

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term