JP2002530738A - 処理システムのスケジューリング - Google Patents

処理システムのスケジューリング

Info

Publication number
JP2002530738A
JP2002530738A JP2000582886A JP2000582886A JP2002530738A JP 2002530738 A JP2002530738 A JP 2002530738A JP 2000582886 A JP2000582886 A JP 2000582886A JP 2000582886 A JP2000582886 A JP 2000582886A JP 2002530738 A JP2002530738 A JP 2002530738A
Authority
JP
Japan
Prior art keywords
job
processor
processing system
processing
scheduling
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2000582886A
Other languages
English (en)
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 JP2002530738A publication Critical patent/JP2002530738A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/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
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 本発明は、ジョブを並列実行するように配置されたいくつかのメモリ共用プロセッサ(10a-e)と、データの一貫性を保証するデータの一貫性保証手段(14)を含む処理システム(1)を提供する。処理システム(1)は第1のアルゴリズムに従って、実行するジョブをプロセッサ(10a-e)のスケジュールに入れるスケジューラ(17)を含む。本発明による処理システム(1)は、第2のアルゴリズムで与えられる順番、望ましくは生成の大域的順番に従ってジョブを撤収させる手段(18)を更に含む。第2のアルゴリズムは第1のアルゴリズムと異なる。第1のアルゴリズムは、使用する特定プロセッサ・システムに調整することができるので、特定プロセッサに対するスケジューリングは、例えば、発生源、目標、通信チャネルまたは問題のジョブのためのプロセッサの生成に依拠してもよい。処理システム(1)が共通なジョブ待ち行列(16)を使用し、スケジューリングは適応型で実行されることが望ましい。

Description

【発明の詳細な説明】
【0001】 (発明の技術分野) 本発明は、共有メモリを有する複数のプロセッサを備えた処理システムに関し
、特にこのようなプロセッサ・システムにおけるジョブ・スケジューリングに関
する。
【0002】 (発明の背景) コンピュータ・システムにおける処理能力の改善に対する要求が絶えず高まる
につれ、さらに高速かつ高能率のプロセッサが必要となる。プロセッサの処理能
力を上げる従来の手法は、より高い周波数のクロック周波数を使用してプロセッ
サの速度を上げることに依拠している。しかし、データ処理とメモリアクセスの
回数が多いことが制約要因である以上、他の対策が必要である。
【0003】 特に応用ソフトウエアを修正せずに処理システムの処理能力を向上させる共通
的な方法は、隣接する命令間で見つかる粒度を細かくとった(fine-grained)並
列性を探し出す、いわゆるスーパースカラー・プロセッサを使用することである
。スーパースカラー・プロセッサにおけるプロセッサ内の機能ユニットは、同時
にいくつかの命令を並列に実行するように配列されている。これは、命令レベル
の並列性(ILP)と呼ばれることが多い。
【0004】 処理能力を上げる他の方法は、処理システムを多重プロセッサ・システム、す
なわち、並列に動作する複数のプロセッサを備えた処理システムとして構築する
ことである。ある種の処理システムは、対象形多重プロセッサ(SMP)として知
られているアーキテクチャーによって高性能な処理を達成している。スーパース
カラー・プロセッサによる粒度を細かくとった並列性と対照的に、SMPアーキテ
クチャーは、同時走行プログラミングの原理に従って設計されたプログラムに明
瞭に指定されるか、単一プロセッサ・システムで逐次実行用に設計されたプログ
ラムからコンパイル中に抽出される、粒度を粗くとった(coarse-grained)並列
性のいずれかを利用する。SMPアーキテクチャーにおけるいくつかのタスクの各
1つは、いくつかのプロセッサのそれぞれ1つで実行される。これらのタスクは
、互いに平行なプロセスかスレッド(threads)である。
【0005】 1995年、イタリアのMargherita, Ligureで開催されたコンピュータ・アー
キテクチャーに関する第22回国際年次シンポジウムにおける、 Sohi、 Breach
および Vijaykumarによる論文、「多重スカラー・プロセッサ」の中に、いわゆ
る多重スカラー・プロセッサが説明されている。実行の多重スカラー・モデルに
おいては、制御の従属関係について静的(static)なプログラムを表す制御フロ
ーグラフ(CFG)が複数のタスクに分割(partitioned)され、多重スカラー・プ
ロセッサは、タスク内の全命令の検査を必ず実行し、タスクの大きさのステップ
で、CFGを推論的(speculatively)にウォークスルー(walk through)する。タ
スクは、タスクの初期プログラム・カウンタを処理ユニットに転送することによ
り、一群の処理ユニットの1つに割り当てられて実行される。したがって、これ
らの処理ユニットで複数のタスクが並列に実行されると、複数の命令の1サイク
ルごとの実行速度(execution rate)の値が得られる。多重スカラー・ハードウ
エアの機能は、CFGをウォークスルーし、タスクを処理ユニットに割り当て、さ
らに外見は逐次実行でこれらのタスクを実行することである。追加されたハード
ウエアは、推論的メモリ動作を保持し、メモリ従属性の違反を検出し、必要に応
じて訂正動作を開始する。先頭のタスクは、非推論的であることが保証されたタ
スクだけであるから、先頭のタスクを除き、全ユニットで実行されるメモリ動作
は推論的である。
【0006】 当初の大部分のジョブが外部のイベントで始まる処理システムにおけるジョブ
は、統計的に高い確率で出現するので、そのプロセッサ・システムの中にジョブ
の非同期ストリームを生成する。このようなプロセッサ・システムでジョブを効
率的に処理することは特に難しい。そのため、より効率的な処理システムの需要
が依然として存在する。
【0007】 Uchida 他に譲渡された米国特許第5,239,539号は、複数の呼処理用プロセッサ
(call processors)に負荷を均等に分散することによりATM交換機の交換網を制
御するコントローラを開示している。主プロセッサは、呼の発信順または呼の各
セルに固定されるチャネル識別子によって呼処理用プロセッサに発信呼を割り当
てる。スイッチング状態コントローラは、交換網の複数のバッファの利用度情報
を収集し、呼処理用プロセッサは、スイッチング状態コントローラの内容にもと
づいて呼の処理を実行する。
【0008】 日本国特許要約書(Japanese Patent abstract) JP 6276198は、複数の処理
ユニットが設けられパケットのスイッチング処理が互いに独立なユニットを用い
て実行される、パケット・スイッチを開示している。
【0009】 日本国特許要約書JP 4100449 Aは、STM多重ATMチャネルによって、ATM交換機
と信号プロセッサ・アレイ(SPA)との間に信号セルを分配するATM通信プロセッ
サ・システムを公開している。処理の負荷分散は、経路選択タグ加算器(routin
g tag adder)によって各バーチャル・チャネルに加算されるSPA番号にもとづき
、STMによって信号セルをスイッチングすることによって実現されている。
【0010】 日本国特許要約書JP 5274279は、プロセッサの階層的集合を形成する並列処理
用のデバイスを開示しており、この中のプロセッサ要素のグループが並列処理お
よびパイプライン処理を担当する。
【0011】 (要約) このように本発明の一般的目的は、ジョブの効率的な並列実行を実現する処理
システムを提供することである。本発明の別の目的は、ジョブを効率的に並列処
理するように配置されたメモリ共用プロセッサを提供することである。本発明の
さらに別の目的は、ジョブの並列実行をする処理システムにおけるスケジューリ
ングの効率を改善することである。本発明のさらに別の目的は、単一プロセッサ
・システム用に存在している応用プログラムを、多重プロセッサ・システムで再
利用することである。
【0012】 これらの目的は、添付の特許請求の範囲で定義されているように、本発明によ
って達成される。
【0013】 本発明の第1の態様によれば、処理システムは、ジョブの並列処理用に配置さ
れたいくつかのメモリ共用プロセッサと、データの一貫性(consistency)を保
証するためのデータの一貫性(保証)手段を備えている。本処理システムは、ジ
ョブの局所性(locality)/平行性(concurrency)を使用して実行効率を上げ
る第1のアルゴリズムに従って、プロセッサで実行するジョブをスケジュールに
入れるスケジューラを備えている。本発明による処理システムは、第2のアルゴ
リズムによって与えられる順番でジョブを撤収させる手段を更に使用する。第2
のアルゴリズムは第1のアルゴリズムと違っている。望ましくは、第2のアルゴ
リズムは、例えば生成の大域的順番(global order)が保持される先入れ先出し
の原理で動作する。第1のアルゴリズムは、使用する特定プロセッサ・システム
に調整されるので、例えば、発生源、目標、通信チャネルを特定プロセッサに対
するスケジュールに入れること、または問題のジョブ用のプロセッサを生成する
ことに依拠することができる。本処理システムは、共通のジョブ待ち行列を使用
し、スケジューリングは適応型で実行されることが望ましい。その上、スケジュ
ーラと撤収させる手段は、望ましくは別々のユニット(distributed units)で
ある。
【0014】 本発明の第2の態様によれば、通信プロセッサ・システムが上に説明した処理
システムを備えている。
【0015】 本発明の第3の態様によれば、このようなプロセッサ・システムのジョブ処理
方法は、共通なジョブ待ち行列にジョブを格納するステップ、並列なメモリ共用
プロセッサでこれらのジョブを実行するステップ、さらに、共有メモリ内の大域
的データ(global data)がプロセッサによって操作される場合、データの一貫
性を保証するステップを備えている。本方法は、第1のアルゴリズムに従って実
行するための共通の待ち行列内のジョブをスケジューリングするステップと、第
1のアルゴリズムと異なる第2のアルゴリズムに従ってジョブを撤収させるステ
ップとを含む。第2のアルゴリズムは、例えば生成の大域的順番が保持される先
入れ先出しの原理で動作する。第1のアルゴリズムは、使用する特定プロセッサ
・システムに調整されるので、例えば、発生源、目標、通信チャネルを特定プロ
セッサに対するスケジュールに入れること、または問題のジョブ用のプロセッサ
を生成することに依拠することができる。望ましくは、実行するジョブのスケジ
ューリングは、プロセッサ・システムの特定アプリケーションの特性、演算フェ
ーズ、および/またはハードウエア・アーキテクチャーに適応している。
【0016】 メモリ共用プロセッサ・システムにおけるすべての応用プログラムおよびデー
タは、プロセッサ・システムのすべてのメモリ共用プロセッサにアクセス可能で
ある。したがって、プロセッサが大域的データを操作する場合、(関連するアト
ミック・アクセスと同様に順序づける)データの一貫性を保証しなければならな
い。
【0017】 本発明によれば、ジョブ間の従属性の衝突が検出され、従属性の衝突が検出さ
れると、推論的に実行されたジョブがロールバックされて再開始されるジョブの
推論的並列処理によって、データの一貫性を保証することができる。従属性の衝
突は変数のマーキングにもとづいて検出されるか、読み出しアドレスと書き込み
アドレスが比較されるアドレス比較動作にもとづいて検出されるかのいずれかで
ある。
【0018】 個々のデータではなく広い領域をマーキングすることにより、粒度を粗くとっ
た従属性の衝突のチェックが実現される。
【0019】 本発明による解決方法は、処理システムの処理能力をかなり向上させる。
【0020】 メモリ共用多重プロセッサを使用するとともにデータの一貫性を保証する適切
な手段を設けることにより、単一プロセッサ・システム用の既存の応用ソフトウ
エアを再利用することができる。既製の標準的マイクロプロセッサを使用して複
数のプロセッサを実現する場合、応用ソフトウエアを自動的に変換するとともに
、おそらくプロセッサ・システムのバーチャル・マシン/オペレーティングシス
テムも修正して複数のプロセッサをサポートすることにより、応用ソフトウエア
のすべてを再利用することが可能である。一方、所有権を伴う設計(proprietar
y design)による特殊なハードウエアで複数のプロセッサが実現されていれば、
応用ソフトウエアは多重プロセッサ環境に直接移行することができる。応用ソフ
トウエアをゼロから設計することに比較すれば、どちらの方法も貴重な時間を節
約するとともにプログラムをつくる費用を削減する。
【0021】 本発明は、固有のジョブの局所性/平行性を使用しジョブを効率的にスケジュ
ールに入れて並列に実行することにより、処理能力を向上させる利点を提供する
。さらにこのプロセッサ・システムは、ハードウエア・アーキテクチャーおよび
動作モードにソフトウエアが容易に適応可能である。つまり、本プロセッサ・シ
ステムは、ほとんどの処理システム、特にイベントにもとづく処理システムに普
遍的に適用可能である。さらに本発明は、特にブロック/オブジェクト指向設計
の場合の既存の応用プログラムの再利用を可能にする。本発明によって提供され
る他の利点は、本発明の実施例の詳細な説明を読めば明白であろう。
【0022】 (詳細な説明) 添付の図面とともに以下の説明を参照することにより、本発明の目的と利点と
一緒に本発明を最もよく理解することができるであろう。 全図面を通じ、同じ参照記号は、対応する要素または同じ要素に使用されてい
る。
【0023】 図1は、本発明による処理システムの模式図である。本発明に従って処理能力
を向上させる効率的な方法は、複数のメモリ共用プロセッサ10a-eを含む。望ま
しくは、複数のメモリ共用プロセッサ10a-eは、標準的マイクロプロセッサにも
とづく多重プロセッサ・システムの形式で実現される。本開示の中の「複数のメ
モリ共用プロセッサ」という用語は、同一チップに実現された複数の共有メモリ
処理ユニットのように、論理的に同じく実現されたものを含んでいなければなら
ない。全プロセッサ10a-eは、共通メモリ、いわゆる共有メモリ11を共用する
。一般にジョブ信号の形式をとる外部イベントが最初に入出力(I/O)ユニット
15に到着すると、ここからジョブ待ち行列16に転送される。ジョブ待ち行列
内の項目は、通常、実際のジョブ自体ではなく、ジョブ信号またはジョブの何ら
かの別の表現である。しかし本説明全体を通じて、「ジョブを表すもの(repres
entations of jobs)」が生起したことを区別せずに示すために、「ジョブ」を
使用することもある。ジョブ待ち行列内の項目に関連するジョブは、プロセッサ
10a-eの1つで実行するスケジュールに入れられる。これらのジョブは、ある種
の順番、コミット順(commit order)で撤収するスケジュールに入れられる。撤
収には、ジョブの実行中に発生したメモリの変化を確認すること、内部で発生し
たジョブを共通の待ち行列に挿入すること、さらには外部のユニットに出信号(
outbound signals)を送信することなどが含まれる。スケジューラ17は、ジョ
ブ待ち行列16にジョブが入ったとき、あるいはもっと後の機会にスケジューリ
ングを実行する。以下、実際のスケジューリングをより詳細に説明する。
【0024】 このスケジューリングによれば、実行するために各種プロセッサにジョブが分
配される。プロセッサはメモリ共用プロセッサであるから、命令とデータは共有
メモリ11に格納されている。各種プロセッサで並列に実行されるジョブは、互
いにある種の従属性を有している可能性がある。大域的データに関する平行性の
状態が発生するかも知れない。データに一貫性のあることを保証するために、デ
ータの一貫性を保証する手段14が設けられている。通常、このデータの一貫性
を保証する手段14は、共有メモリ11とともに各種プロセッサ10a-eの機能を
含むので、図1の破線で示すように別々につくられているのが普通である。以下
、データの一貫性を保証する手段14を詳細に説明する。
【0025】 ジョブの実行が終了すると、そのジョブは撤収つまりコミットされなければな
らない。このような撤収は、スケジュールに入れられたコミット順に従ってコミ
ッター18によって実行される。したがって、コミッター18は、適切に撤収を
実行するために共有メモリ11およびジョブ待ち行列16と協力する。以下、コ
ミッター18およびコミット順をさらに考察する。1つのジョブを実行すると、
共有メモリに格納されたデータに変化が生じることがあるが、新しいジョブまた
はメッセージが生じることもある。このような内部で生成したジョブまたはメッ
セージは、外部ユニットまたは本プロセッサ・システムのプロセッサに対して送
られる。外部ユニットに送られたジョブおよびメッセージは、適切な受信器に送
信するために入出力(I/O)ユニット15に転送される。内部のジョブは、この
経路に沿って送られるか、またはジョブ待ち行列に送られ、場合によってはある
種のプロセッサに直接送られる。
【0026】 イベントにもとづくプロセッサ・システムにおける計算の実行は、一般に状態
マシンとしてモデル化され、このモデルにおける外部の世界から入力されたジョ
ブは、プロセッサ・システムの状態を変更し結果として出力ジョブになりうる。
独立/互いに無関係な状態マシンが各ジョブ段階を処理できたとすれば、各種状
態マシンの間でデータの共用は行われない。しかし、大域的状態(global state
s)で現われる大域的資源(global resources)が与えられていると、所定の大
域的状態に関する演算は、通常、一度で所定の大域的状態にアクセスして、プロ
セッサ・システムの状態マシンの一部を実行する唯一のプロセッサによる「アト
ミック(atomic)」でなければならない。共通待ち行列内のジョブ間の順番に従
属性があるかも知れない。メモリ共用プロセッサ・システムにおける全プログラ
ム空間と全データ空間は、全プロセッサにアクセス可能である。したがって、デ
ータの一貫性を保証することが必要である。何故ならば、プロセッサは、全プロ
セッサまたは少なくとも2つ以上のプロセッサに共通な大域的データを操作する
必要があるからである。このことは、データの一貫性保証手段によって達成され
る。
【0027】 ソフトウエアが逐次プログラミングにもとづいているプロセッサ・システムに
おいては、ジョブが正しい順番で撤収することが重要である。これによって、ジ
ョブ間の順番の従属性(sequence dependencies)の検出と訂正が可能になる。
各優先レベルの中の最も論理的な撤収の順番は、先入れ先出し(FIFO)の原理に
従うことである。つまり最も古いジョブが最初に撤収することである。各種の発
生源から発信したジョブは互いに依存するようになるので、コミットの順番とし
て、例えば、生成の大域的順番を使用することができる。非同期のジョブは実行
直後に撤収してもよいので、デフォルトの大域的順番を与えてもよい。したがっ
て、通常、コミットのスケジューリングはジョブ待ち行列のFIFO順に従って実行
される。
【0028】 実行するジョブをスケジュールに入れる最も原始的な方法は、FIFO順に従うこ
とである。換言すると、ジョブ待ち行列16内に実行すべきジョブの待ち行列が
存在すると、それらのジョブがジョブ待ち行列16に入った順番と同じ順番で実
行するように分配される。利用できる最も古いジョブは、プロセッサ・システム
に利用可能なプロセッサがある間は、逐次、各種プロセッサのスケジュールに入
れられる。プロセッサが利用可能になると、ジョブのうちの最も古いジョブがこ
のプロセッサに送られる。このジョブが実行されると、撤収手順によって大域的
順番が維持される。
【0029】 この設計は、ほぼプログラムの順番だけで指定されたジョブの順番にもとづい
て、ジョブをプロセッサのスケジュールに入れる。しかし、多重プロセッサ・シ
ステムにおいてジョブをスケジュールに入れる場合に重要な、いくつかの検討事
項が存在する。例えば、各種プロセッサで実行されるジョブは、同じデータを操
作するかも知れないから、このことはデータの非一貫性/衝突になり、交互にロ
ールバックまたはストール(stalls)となって、全体の処理速度を低下させる。
時間と空間におけるデータの局所性を利用するために、キャッシュが使用される
。対応するジョブの局所性も存在し、より効率的にジョブをスケジュールに入れ
るためにこの局所性を使用することができる。非対称の構成では、全プロセッサ
が全タスクを実行するために必要な能力を有しておらず、ジョブは、利用可能な
適切な能力を備えたプロセッサを待たなければならない。
【0030】 したがって、本発明によれば、実行スケジューリングは第1のアルゴリズムに
従って実行され、コミットのスケジューリングは第2のアルゴリズムに従って実
行される。第2のアルゴリズムは第1のアルゴリズムと異なっており、望ましく
はFIFOタイプであって、例えば、生成の大域的順番を維持する。第1のアルゴリ
ズム、つまり、それに従って実行スケジューリングが実行される規則は、望まし
くは、特定の処理システムに適応する。このアルゴリズムは、特定アプリケーシ
ョンの特性、演算フェーズおよび処理システムのハードウエア・アーキテクチャ
ーに適応するように調整可能である。このような適応は、プロセッサ・システム
を組み込むか修正したときに実行されるが、動作中も定期的にまたは間欠的に実
行可能である。
【0031】 第1のアルゴリズムは、規則とともに全体のプロセッサ・システムの性能の最
適化を試みる発見的方法を使用する。一つの関心事は、平行性の状況を減らすか
、ローカル・プロセッサのキャッシュのキャッシュヒット率を最適化するために
、可能な限り同じデータを同じプロセッサで処理するようにジョブを維持するこ
とである。他の関心事は、プロセッサ間の負荷のバランスをとって、いつでも全
プロセッサを使用中にすることである。第3の検討事項は、ジョブ待ち状態(st
arvation)を回避することと、リアルタイムの要求条件に合致することである。
ある時間間隔内にプロセッサのスケジュールに、すべてのジョブを入れるように
保証しなければならない。
【0032】 図2は、本発明による処理システム1の別の実施例を指示する。この図では、
データの一貫性を保証する手段14が全プロセッサ10a-eの共通手段として示さ
れているが、プロセッサ10a-eの実際にジョブを実行する部分から分離されてい
る。この図は、ジョブがプロセッサ10a-eで推論的に実行される状態が意図され
ており、データの一貫性を保証する手段14には、例えば、書き戻し記憶領域と
従属性をチェックする手段が含まれている。プロセッサ10a-eは、例えば、メモ
リ11のプログラム記憶領域12からプログラム命令を読み出すことができ、デ
ータの一貫性を保証する手段14は、主としてメモリ11のデータ記憶領域13
に対して動作する。
【0033】 ジョブ待ち行列16は、並列処理に重要な役目を果たす構成要素である。何故
ならば、ジョブ待ち行列16は、ジョブを実行するために必要な全情報を含んで
いるからである。図3aは、本発明によるジョブ待ち行列16の実施例の模式図
である。説明を容易にするため、以下の例では、処理システムに3つの並列プロ
セッサだけが存在する。図3aのジョブ待ち行列16は、ジョブのFIFOバッファ
として配置されている。ジョブ待ち行列16内の各エントリ20は図中の1行に
対応し、いくつかの位置21〜24を含み、その中にジョブに関連する情報が入
る。ジョブ21の仕様または、ジョブの生起、ジョブタイプの分類、意図された
ジョブの目標、実行用データなどのような関連する情報22とともに、何らかの
別の表現が利用可能である。ジョブ待ち行列16は、実行状況を見失わないよう
にするための2つのフラグを含む。開始フラグ23は、その特定のエントリが、
プロセッサ10a-eのどれで自身の実行を開始したか否かを示す。「1」は、ジョ
ブが開始したことを示し、「0」は、まだ実行を待っていることを示す。同様に
準備完了フラグ24は、ジョブが実行を終了して撤収を待っているか否かを示す
。ここで「1」はジョブが準備完了であることを示す。本発明と一緒にジョブ待
ち行列16のこのような判りやすい構成を使用することができる。
【0034】 ジョブ待ち行列はFIFO待ち行列なので、コミットの順番は、待ち行列内のジョ
ブの順番で決定される。ポインタ25は、コミットの順番と関連し、ジョブ待ち
行列内の最も古いジョブを指示する。指示されたジョブが撤収すると、ポインタ
25は、ジョブ待ち行列16内で1ステップ上に移動して、撤収できる次のジョ
ブを指示する。第2のアルゴリズムのFIFOの単純な挙動は、FIFO待ち行列とポイ
ンタ25によってつくられる。
【0035】 この図におけるスケジューラおよびコミッターは、個々のユニットとして示さ
れている。しかし、実際、このような手段の本来の特性のため、これらのユニッ
トは別々に実現されている。したがって、スケジューラの重要部分、つまりスケ
ジューラの機能は、共有メモリの中と同様、各種プロセッサ内に存在するか、各
種プロセッサで実行される。同様に、コミッターは、望ましくは別な手段として
実現される。
【0036】 図3aの実施例における実行スケジューリングは、プロセッサ10a-eが利用可
能となったときに実行された。何故ならば、ジョブ待ち行列自体に実行スケジュ
ーリングの情報が格納されていないからである。このような場合、プロセッサが
スケジューラに空いている実行能力について通知すると、スケジューラは、その
プロセッサの適切なジョブを見つけようとジョブ待ち行列を探索する。この適切
なジョブは、上に説明した第1のアルゴリズムに従って選択される。選択された
ジョブは、空き(free)プロセッサで実行される。この時点以降でプロセッサが
利用可能になったときに実際のスケジューリングが実行される手順の利点は、い
くつかの異なる優先順位が付けられた代わりのジョブをアルゴリズムに探索させ
ることにより、不均等な負荷配分が容易に補正されることである。第1の優先順
位に従って或るプロセッサに送られたジョブは、当初そのプロセッサに送られる
他の利用可能なジョブがなければ、とにかく別のプロセッサで実行される。した
がって、一時的に不均等な負荷が分配されるかも知れない。
【0037】 しかし、プロセッサが利用可能になるとスケジューリングが実行され、かつス
ケジューリング自体が過大なプロセッサ能力を要求する以上、この方法の速さは
、ある種のアプリケーションでは遅いかも知れない。何故ならば、プロセッサは
スケジューリングが実行されるのを待たなければならないからである。
【0038】 図3bは、本発明のジョブ待ち行列16の代替実施例を示す。コミットのスケ
ジューリングは前と同様に実行されるが、この実施例のジョブ待ち行列16は、
各エントリのために1つ余分なフィールドを含む。スケジュールに入れられた実
行タグ(execution tag)26は、このジョブに好適なプロセッサに関する情報
を含む。新しいジョブが待ち行列に入ると、スケジューラ17は、例えば、ジョ
ブ自体の情報21と関連情報22にもとづいて実行スケジューリングを実行する
。スケジューラ17は、適切なプロセッサを探すと、実行タグ26に表示を格納
する。プロセッサが利用可能になると、利用可能なプロセッサの指示を見つける
ため実行タグが探索され、実行が開始する。
【0039】 スケジューリングが事前に実行されるため、新しいジョブの実行を開始する手
順は迅速である。しかし、その特定プロセッサのスケジュールに入れるジョブが
無い場合、空きプロセッサの能力を直ちに使用することはできない。しかし、こ
のような状況における1つの可能な解決方法は、既に他のプロセッサのスケジュ
ールに入れられているいくつかの待ち合わせ中のジョブを、その空きプロセッサ
のスケジュールに入れ直す(reschedule)ことである。
【0040】 本発明の中で有用なジョブ待ち行列の別の実施例が、図3cに示されている。
ここで、コミットのスケジューリングは、ジョブ待ち行列内の各エントリにコミ
ット・タグ27を導入することにより実行される。コミット・タグ27は、ジョ
ブがジョブ待ち行列16に入ったとき第2のアルゴリズムに従って設定され、ジ
ョブの大域的順番を指示する。コミット・タグ27は順番を見失わないようにし
ているので、このようなジョブ待ち行列に対する各種ジョブの位置はFIFO順であ
る必要はない。撤収するとき、コミッター18は、撤収の準備が完了したジョブ
に対応するコミット・タグが最下位になっているジョブを探索する。
【0041】 本発明の中で有用なジョブ待ち行列の別の解決方法が、図3dに示されている
。ここで、ジョブ待ち行列16は、それぞれが1つの特定プロセッサに対応する
3つのセクション28に分割される。新しいジョブが待ち行列に入ると、スケジ
ューラ17は、そのジョブの大域的順番に従ってコミット・タグ27を設定する
。しかし、スケジューラ17は、第1のアルゴリズムに従ってジョブ待ち行列1
6内の位置を決定する。ジョブが第1のプロセッサのスケジュールに入れられる
と、そのジョブは、ジョブ待ち行列の第1のセクションに入り、ジョブが第2の
プロセッサのスケジュールに入れられると、そのジョブは、ジョブ待ち行列の第
2のセクションに入り、ジョブが第3のプロセッサのスケジュールに入れられる
と、そのジョブは、ジョブ待ち行列の第3のセクションに入る。プロセッサが利
用可能になると、セクション28の中のそのプロセッサに対応する第1のジョブ
が選択されて実行される。撤収するとき、撤収が正しい大域的順番で実行される
ことを保証するためにコミット・タグ27が使用される。これにより、プロセッ
サに依存する並列待ち行列/プロセッサに接続された並列待ち行列(parallel d
ependent/coupled queues towards the processors)が可能になる。
【0042】 共通なジョブ待ち行列は、1つのユニットとして上に説明されている。しかし
、互いに依存する各種メモリユニットのメモリ部分によって共通なジョブ待ち行
列を構成することもできる。このように接続された待ち行列は、上に説明した待
ち行列の設計のどれかを含むことができる。各種プロセッサに対するアクセス時
間が異なる相互依存性のある記憶領域を使用することも可能である。
【0043】 当業者と同様、上に説明した4つの待ち行列の実施例は、ジョブ待ち行列を実
現できる方法の例にすぎない。実行の順番とコミットの順番を別々にスケジュー
ルに入れることに関する基本的な考え方を維持しながら、多数の変更や修正を実
行することが可能である。
【0044】 プロセッサ・システムの協働を最適化する場合、実行スケジューリングは非常
に重要である。上に説明したように、スケジューリングの使用を計画中の特定プ
ロセッサ・システムに、スケジューリングを調整しなければならない。図4aは
、本発明の第1の実施例による処理システムの模式図である。この処理システム
は、いくつかのメモリ共用プロセッサ10a〜10e、共有メモリ11、I/Oユニット
15、スケジューラ17、データの一貫性保証手段14およびジョブ待ち行列1
6を含む。
【0045】 I/Oユニット15は、着信する外部からのジョブを受信して、外部へのジョブ
を出力する。スケジューラ17は、実行する着信ジョブをスケジュールに入れる
とともに、それらのジョブをジョブ待ち行列16に配置する。各プロセッサは、
処理するジョブを共通なジョブ待ち行列16からフェッチ、つまり受信する。こ
のフェッチは、第1のアルゴリズムに従うとともに、適切な優先順位に従って実
行される。
【0046】 通常、ジョブは信号メッセージの形をしており、この場合、各メッセージはヘ
ッダと信号本文(signal body)を有する。信号本文は、ソフトウエア・タスク
を実行するために必要なパラメータを含む。本開示全体を通じ、「タスク」およ
び「ジョブ」という用語は区別せずに使用される。普通、信号本文は、必要な入
力オペランドとともに、共有メモリ内のソフトウエア・コード/データに対する
暗黙または明瞭なポインタを含む。したがって、プロセッサは、ソフトウエアの
タスクまたはジョブに対応し独立してジョブをフェッチし並列に実行する。
【0047】 タスクの並列実行中、プロセッサは、共有メモリ内の大域的データを必要とす
る。(ジョブまたはタスクの存在時間中、つまりジョブが撤収するまでの間)い
くつかのプロセッサが同じ大域的データにアクセスして操作したり、データの不
正な順番で動作したりする場合に、データの非一貫性を回避するため、データの
一貫性保証手段14は、データの一貫性が常に保証されることを確実にしなけれ
ばならない。本発明は、衝突検出とロールバック手順を使用して、データの一貫
性を保証している。
【0048】 ソフトウエア・タスクが推論的に並列に実行され、従属性の衝突が検出される
ので、従属性の衝突が検出され推論的に実行されたタスクをロールバックして再
開始することができる。一般に衝突検出は、マーカー法(marker method)また
はアドレス比較法(address comparison method)によって達成される。マーカ
ー法では、各プロセッサは、共有メモリ内の変数の使用をマークする手段を含み
、変数へのアクセスの衝突は、このマーキングにもとづいて検出される。一般に
衝突を検出すると、(無効な処理が生じる)ロールバックに起因するペナルティ
が付随する。衝突検出と組み合わせて使用前に資源のロッキングを使用し、ロー
ルバックによるペナルティを小さくできることに注意されたい。
【0049】 通常、ジョブ信号は、応用ソフトウエアの命令の実行に必要なオペランドとと
もに、共有メモリに格納された応用ソフトウエアの命令に対するポインタを暗黙
外にまたは明白に含んでいる。この意味でジョブ信号は必要なものが完備してお
り、対応するジョブを完全に定義する。
【0050】 情報の流れがプロトコルで支配されているプロセッサ・システムに対する一般
的な条件は、ある種の関連したイベントを、受信した順番で処理する必要がある
ことである(所定のプロセッサ・システム・プロトコルによって強制される順序
づけの条件を満足する必要がある)。このことは、プロセッサ・システムを実現
する方法に関係なく、プロセッサ・システムに一定不変のことである。通常、ジ
ョブ間の撤収の順番は、処理コアへの到着/生成によって定義され、一般に変更
されない。しかし、各種の優先順位レベルのジョブ信号を扱う処理システムでは
、優先順位の低いジョブの前に優先順位レベルの高いジョブを撤収させることが
有用である。一般に同じ優先順位レベルのジョブは、それらのジョブが到着した
とき/生成したときと同じ順番で撤収する。
【0051】 以下、データの一貫性を保証する手段としての衝突検出を詳細に説明する。
【0052】 (スケジューリングの例) 呼源(traffic source)を使用したマッピング 一例として、階層的処理システムは高レベルの中央プロセッサ・ノードと、い
くつかの低レベルのプロセッサ、いわゆる複数の地域プロセッサ(regional pro
cessor)を含み、各地域プロセッサは、いくつかのハードウエア・デバイスに交
互にサービスを提供する。このようなプロセッサ・システムにおいて、ハードウ
エア・デバイスから生起するイベントと、デバイスのグループにサービスを提供
する地域プロセッサから到着するイベントは、(高レベルの処理によって保護さ
れるエラー条件を排除する)所定のプロトコルによって定義される順番の条件に
よって強制された(imposed)条件に合致する。したがって、特定のデバイス/
地域プロセッサからのジョブは、普通、他のこのようなグループと(順番の従属
性が有効な限り)独立なジョブのグループを形成する。このような各グループ内
のジョブは、直ちに同じデータにアクセスする状況にあるので、キャッシュヒッ
ト率を改善する見込みがある。その上、地域プロセッサからの各種ジョブ間の順
番の従属性は、ほとんど存在していない。これらの特徴を維持するために、各デ
バイス/地域プロセッサは、自身のジョブを同じプロセッサ10a-eに常に供給し
なければならない。例えば電気通信への応用の場合、ユーザーから受信した一連
の数字、または中継線装置に対して受信したISDNユーザー部メッセージは、受信
した順番で処理されなければならない。しかし、2つの独立な中継線装置に受信
した複数列のメッセージは、個々の中継線装置に対する順序づけが維持される限
り、いかなる順番で処理されてもよい。
【0053】 図4aの中で、所定の発生源、例えば、特定のハードウエア・デバイスや通信
チャネルからのジョブ31が所定のプロセッサ10eのスケジュールに入れられ、
別の所定の発生源、例えば、特定の地域プロセッサからのジョブ32が別の所定
のプロセッサ10bのスケジュールに入れられていることを見ることができる。通
常、発生源の数は、メモリ共用プロセッサの数よりも非常に多いのであるから、
各プロセッサには、いくつかの発生源が割り当てられるのが普通である。代表的
な電気通信/データ通信への応用では、1つの中央処理ノードと交信する102
4台の地域プロセッサがあればよい。複数のメモリ共用プロセッサに地域プロセ
ッサをマッピングすることは、(中央ノードに5台のプロセッサがあり、全地域
プロセッサが同じ負荷を発生すると仮定して)各メモリ共用プロセッサが、おお
よそ205台の地域プロセッサを持つことを意味している。しかし実際には、中
央ノードのプロセッサに対して、もっと細かい粒度(granularity)、信号デバ
イスのようなハードウエア・デバイスからのジョブをスケジュールに入れること
、加入者の終端など、を有することは有利であろう。これによって、一般に負荷
の平衡化が容易になる。通信網内の各地域プロセッサは、数百のハードウエア・
デバイスを制御することができる。そこで、当然時分割で負荷を処理する1台の
中央ノード・プロセッサで、10,000台またはそれ以上のハードウエア・デバイス
を処理する代わりに、本発明による解決方法は、ハードウエア・デバイスからの
ジョブを、中央ノードにあるいくつかのメモリ共用プロセッサのスケジュールに
入れることである。
【0054】 プロセッサからプロセッサへの(CP-to-CP)信号、いわゆる内部ジョブによっ
て接続された外部ジョブをスライスの形で処理するLM Ericsson社製のAXEディジ
タル・スイッチング・システムのようなプロセッサ・システムは、プロトコルに
よって強制されるスケジューリング条件だけでなく、プロセッサ・システム自体
のスケジューリング条件を強制する。このようなCP-to-CP信号は、(実行中の最
後のスライスで発生した、より高い優先順位の信号に代わらない限り)これらの
信号が発生した順番で処理されなければならない。各CP-to-CP信号(内部ジョブ
)が、その信号を発生させた同じプロセッサで処理されれば、この追加スケジュ
ーリング条件を満足する。このことは、プロセッサ10aからジョブ待ち行列16
までの点線37と、同じプロセッサ10aに戻る点線37によって、図4bに示さ
れている。同様に、プロセッサ10eで生成された内部ジョブは、線30によって
示されるように、同じプロセッサ10aに戻ってくる。このため、内部ジョブは、
内部ジョブを発生させた同じプロセッサまたは同じプロセッサの組に内部ジョブ
を戻すことによって制御されるので、これらの内部ジョブが発生した順番と同じ
順番で処理されることを保証している。このスケジューリングは、キャッシュの
ヒット率を改善するとともに、従属性の関係を小さくする。
【0055】 ソフトウエアの機能/データの目標/発生源にもとづくマッピング 以前に説明したとおり、いくつかのプロセッサ・システムは、内部ジョブによ
って接続された「スライス(slices)」で外部ジョブを処理する(例えば、バッ
ファされたCP-to-CP信号)。実行スケジューリングは、1組の複数のメモリ共用
プロセッサが、多重プロセッサ・パイプラインとして動作するように実行するこ
とができ、この場合、各外部ジョブは、パイプラインの各種プロセッサ・ステー
ジで実行されるジョブのチェインとしてのスライスで処理される。このことは、
第1のアルゴリズムが、パイプラインの中の第1のプロセッサによって生成され
た内部ジョブの実行を、そのプロセッサ自体または別の特定プロセッサのスケジ
ュールに入れることを意味している。したがって、このスケジューリングは、前
に説明した図4bのスケジューリングと違っている。生成された順番で信号を処
理する順序付け条件は、或るステージで発生した信号のすべてが発生した順番と
同じ順番で後続ステージに送られるまでの間は保証される。この規則から少しで
もはずれるとレーシング(racing)が発生し、従属性の衝突と、処理能力を低下
させるロールバックが生じる。所定のスライスの実行が2つ以上の信号になった
場合、これらの信号は、どちらも発生した順番と同じ順番で後続のプロセッサ・
ステージに送られなければならない。これに代わるものとして、信号が2つまた
はそれ以上のプロセッサに分配される場合、レーシングの生じる可能性がロール
バックを回避することは比較的まれであることを確実にすることが必要である。
【0056】 図4bの処理システムは、この可能性を示すために使用されている。例えば、
プロセッサ10a、つまり多重プロセッサ・パイプラインの一部で発生した内部ジ
ョブは、太い破線37のとおり同じプロセッサに戻ってこないが、その代わりに
細い破線38のとおり別のプロセッサ10dに戻ってくる。パイプライン内のプロ
セッサの物理的配置が並列であっても、論理的順番は並列ではなく直列である。
【0057】 多重プロセッサ・パイプライン内のプロセッサ・ステージが、第1のジョブ・
チェインに属するジョブを実行し、生じた内部ジョブ信号を次のプロセッサ・ス
テージに送った場合、通常、次のジョブ・チェインからのジョブの処理を開始す
ることは自由なので、処理能力が改善されることを理解されたい。
【0058】 概観すると「パイプライン」を実行すると、大域的データへのアトミック・ア
クセスの衝突回数が低減する一方、例えば、呼源にもとづくジョブの実行ではキ
ャッシュのヒット率が改善され、順序づけの従属性が小さくなるかも知れない。
したがって最も望ましい状況は両者の組み合わせであり、この組み合わせでは、
アトミック・アクセスの難しさという高いリスクを伴うフローはパイプラインで
処理されるが、種類の間の順序づけの従属性が小さいか全く存在しない複数の種
類に分類できるフローは、並列に処理される。
【0059】 (クラスタの使用) 図5は、オブジェクト指向設計のメモリ共用ソフトウエアを有する単純化され
たメモリ共用多重プロセッサ・システムの模式図である。共有メモリ11内のソ
フトウエアは、ブロック/オブジェクト指向設計であり、ブロックまたはクラス
B1〜Bnの集合として構成されており、各ブロックは或る機能または或る複数の機
能を実行することを担当する。各ブロックは、コードが格納されるプログラム・
セクターと、データが格納されるデータ・セクターとの2つの主セクターに分割
されるのが普通である。ブロックのプログラム・セクター内のコードは、同じブ
ロックに属するデータにアクセスして演算するだけである。同様にデータ・セク
ターも、望ましくは2つのセクターに分割される。第1のセクターの「大域的」
データは、いくつかの大域変数(global variables)GV1〜GVnを含み、第2のセ
クターは、例えば、レコードR1〜Rnのような「私的(private)」データを含み
、各レコードは、Rxとして示されるいくつかのレコード変数RV1〜RVnを含む。
【0060】 一般にブロックに信号エントリが入ると、そのブロック内のデータの処理を開
始する。外部または内部のジョブを受信すると、各プロセッサは、ジョブ信号に
よって指示されたブロック内のコードを実行して、そのブロック内の大域変数と
レコード変数について演算を実行し、ソフトウエアのタスクを実行する。ソフト
ウエア・タスクの実行は、各プロセッサの波線によって図5に示されている。
【0061】 図5の例では、第1のプロセッサ10aがソフトウエア・ブロックB88のコードを
実行する。命令I20〜I23だけが示されているいくつかの命令が実行される
と、各命令は、ブロック内の1つまたはそれ以上の変数について演算を実行する
。例えば、命令I20は、レコードR1のレコード変数RV28について演算を実行し
、命令I21は、レコードR5のレコード変数RV59について演算を実行し、命令I
22は、大域変数GV43について演算を実行し、さらに命令I23は、大域変数GV
67について演算を実行する。これに対応して、プロセッサ10bは、コードを実行
して、ブロックB1の変数について演算を実行し、プロセッサ10cは、コードを実
行して、ブロックB5の変数について演算を実行し、さらにプロセッサ10dは、コ
ードを実行して、ブロックB2の変数について演算を実行する。
【0062】 ブロック指向ソフトウエアの一例は、LM Ericsson社のPLEX(Programming Lan
guage for Exchanges:交換機用プログラム言語)ソフトウエアであり、このソ
フトウエアでは、ソフトウエア全体がブロックに構成されている。Javaアプリケ
ーションは真のオブジェクト指向設計の例である。
【0063】 オブジェクト指向ソフトウエアの設計では、共有メモリ内のソフトウエアは、
上に説明した複数のブロックまたはクラスに構成され、(特定ブロックに送られ
た)外部ジョブを受信すると、対応するプロセッサがブロック/オブジェクト内
のコードを実行し、他のブロック/オブジェクトのために内部ジョブの形式をし
た結果を発生する。実行のためにこの内部ジョブが到着すると、指示されたブロ
ック/オブジェクトで実行され、何らかの別のブロック/オブジェクトのために
別の内部ジョブを発生する。例えば電気通信に応用する場合、各外部ジョブは、
その数が5〜10の内部ジョブを生じるのが普通である。
【0064】 オブジェクト指向ソフトウエア設計のために特化されたパイプラインを使用す
る実行スケジューリングは、ソフトウエアのブロック/クラスのクラスタをプロ
セッサに割り当て、目標ブロックにもとづいてジョブをスケジュールに入れるこ
とである。1つのクラスタが1つのプロセッサに割り当てられると、別のクラス
タは別のプロセッサに割り当てられる。このように、共有メモリ内のブロック/
クラスの各クラスタがプロセッサの所定の1つに割り当てられるが、この割り当
て方法は、例えば、スケジューラ内のルックアップテーブルと、共有メモリ内の
ルックアップテーブルの中で実現される。ルックアップテーブルは、例えば、ジ
ョブIDにもとづいて各ジョブに目標ブロックをリンクするとともに、ブロックの
所定のクラスタに各目標ブロックを関連させる。スケジューラは、ルックアップ
テーブル内の情報に従って外部ジョブをプロセッサに分配する。共有メモリ内の
ルックアップテーブルは、すべてのプロセッサで使用可能であり、プロセッサに
内部ジョブの分配を可能にする。換言すると、プロセッサが内部ジョブを発生す
ると、プロセッサはルックアップテーブルを見て、i) ジョブIDにもとづいて対
応する目標ブロックを決定し、ii) 識別した目標ブロックが属するクラスタを決
定し、さらに、iii) 識別したクラスタが割り当てられたプロセッサを決定した
後、内部ジョブの信号を適切なプロセッサに送る。通常、各ブロックは1つかつ
1つだけのクラスに属しているが、ジョブIDだけでなく実効状態のような情報を
使用することにより、重複のあるクラスタに対する割り当て方法をやや巧妙に実
現することができる。
【0065】 図4cは、ジョブの目標ブロック、39a〜39cにもとづく実行スケジューリング
のアルゴリズムを示す。実線の経路34によって示されているように、共有メモ
リ11内の或る目標ブロック39aを有するジョブは、或るプロセッサ10eで実行さ
れるようにスケジュールに入れられる。破線の経路33によって示されているよ
うに、共有メモリ11内に別の目標ブロック39bを有する別のジョブは、或るプ
ロセッサ10bで実行されるようにスケジュールに入れられる。
【0066】 図4dは、データ源にもとづくジョブの実行スケジューリングを示す。ジョブ
がブロック/クラス39a内のコードを実行すると、そのジョブは、発生源にもと
づくスケジューリング・アルゴリズムに従って、プロセッサ10dのスケジュール
に入れられる。入力データは実線35に従う。別のブロック/クラス39b内のコ
ードを実行する別のジョブは、プロセッサ10bのスケジュールに入れられる。入
力データは破線36に従う。
【0067】 最大利得を求める場合、プロセッサに対するスケジューリングは全プロセッサ
の負荷が等しくなるようにする必要がある。したがって、ブロック/クラスのク
ラスタは、「等負荷」の基準に従って分割される(分割を再調整するため各クラ
スタにかかる時間の総計は、例えば、単一プロセッサで走行する小型のアプリケ
ーションから知りうるか、プロセッサ・システムの性能を監視することによって
収集される)。
【0068】 実際の実行スケジューリングを実行する方法と関係なく、各種プロセッサの負
荷が等しくない状況が一時的または固定的に現れることがある。このような状況
の場合、各種ジョブの遅れ時間がかなり違うことになる。このような状況が起こ
ることを防止するためには、常に第1のアルゴリズムを調整することが望ましい
。適応型の負荷均等化を達成するために使用できる簡単な手順は、負荷が最も重
いプロセッサのスケジュールに入れたいくつかのジョブを、別の所定のプロセッ
サのスケジュールに入れ直すことである。非常に不均等な負荷の分配が検出され
た場合、このような再スケジューリングを定期的にまたは間欠的に実行してもよ
い。このような手順は、負荷分配の長時間の変化と同様、一時的な変化を処理す
ることができる。
【0069】 次に衝突検出の説明に入る。データの一貫性を保証する手段として衝突検出を
備えたプロセッサ・システムの場合、ソフトウエア・タスク(ジョブ)が推論的
に複数のプロセッサによって並列に実行されると、従属性の衝突が検出されるの
で、推論的に実行され従属性の衝突が検出されたタスクを、適切な順番でロール
バックして再開始してもよい。
【0070】 ロールバックの基本的原理は、衝突の発生に含まれる1つまたは両方のジョブ
の先頭に戻ることである。実行中につくられた変化は、その点まで元に戻され、
ロールバックされたジョブは、このような方法、つまりこのように遅れて後で再
開始されるので、効率と妥協せずにその進行を保証することができる。このこと
は、一般に上記の方法(scheme)はロールバックを繰り返すことができないこと
を意味している。実際にロールバックを実行する判断は、例えば、ジョブの衝突
の生成の大域的順番に依存する。
【0071】 望ましくは、衝突を検出する各プロセッサは、タスクを実行する際に共有メモ
リの変数の使用をマークするので、変数へのアクセスの衝突が検出されることを
可能にする。それの基本的レベルのマーカー法は、共有メモリの個々の変数の使
用をマークすることで構成される。しかし、個々のデータではなく広い領域をマ
ークすることにより、粒度をより粗くとった従属性の衝突チェックが実現する。
粒度をより粗くとった従属性の衝突チェックを実現する1つの方法は、ページン
グを含む標準的メモリ管理手法を利用することである。他の方法は、変数のグル
ープをマークすることであり、個々のレコード変数をマークするのではなく、全
レコード変数を含む全レコードをマークすることが特に効率的であることが判明
した。しかし、ジョブが所定のデータ領域を使用している場合、何らかの別のジ
ョブが同じ領域を使用する確率を非常に小さくしなければならないように、「デ
ータ領域」を選択することが重要である。上記と異なる状況で粒度を粗くとった
データ領域をマークすると、実際にロールバックの頻度が高くなる。
【0072】 図7は、オブジェクト指向ソフトウエア設計の従属性衝突を検出する変数のマ
ーキングの使用を示す。上に説明したように、共有メモリ11はブロック/クラ
スB1からBnに構成され、いくつかのプロセッサ10a〜10cは共有メモリ11に接続
されている。図7は、ブロックB2とブロックB4の2つのブロックをより詳細に示
す。図7に示すように、この特殊なマーカー法を実施すると、ブロック内の各大
域変数GV1〜GVnと各レコードR1〜Rnはマーカーのフィールドに関連づけられる。
【0073】 マーカーのフィールドには、メモリ共用プロセッサ・システムに接続されたプ
ロセッサごとに1ビットがあるので、この代表的なケースでは、各マーカーのフ
ィールドには(望ましくは、読み出し、書き込みおよび実行状態用の)3ビット
がある。開始時点で全ビットがリセットされると、各プロセッサは、変数または
レコードに(読み出しまたは書き込み)アクセスする前に自身のビットを設定し
た後、試験のために全マーカーのフィールドを読み出す。マーカーのフィールド
に何か別のビットが設定されていれば、直ちに衝突が起こる状況にあるので、プ
ロセッサは実行中のタスクをロールバックして、対応する全マーカー・ビットを
リセットすることを含め、実行中のその点までにつくられた変化のすべてを元に
戻す。一方、他のビットが設定されていなければ、プロセッサはそのタスクの実
行を継続する。各プロセッサは、実行中にアクセスした各変数のアドレスを記録
し、実行を撤収させるか、コミットする場合に、対応する各マーカーのフィール
ドの自身のビットをリセットするためにこのアドレスを使用する。衝突が検出さ
れた場合にロールバックすることができるためには、修正された全変数(つまり
、修正前の変数の状態)のコピーと、各ジョブの実行中のアドレスのコピーを保
管しておくことが必要である。
【0074】 図7におけるプロセッサ10bは、大域変数GV1にアクセスすることが必要なので
、GV1に関連するマーカーのフィールドの第2の位置にある自身のビットを設定
した後、全マーカーのフィールドを読む。この場合、フィールド(110)は、プ
ロセッサ10aによって設定されたビットと、プロセッサ10bによって設定されたビ
ットを含んでいるので、直ちに起こりそうな変数へのアクセスの衝突が検出され
る。プロセッサ10bは実行中のタスクをロールバックする。これに対応して、プ
ロセッサ10bはレコードR2にアクセスすることが必要なので、第2の位置にある
自身のビットを設定した後、全マーカーのフィールドを読む。フィールド(011
)は、10bによって設定されたビットと、10cによって設定されたビットを含んで
いるので、レコードへのアクセスの衝突が検出される。この場合も、プロセッサ
10bは実行中のタスクをロールバックする。プロセッサ10cがレコードR1にアクセ
スすることが必要な場合、プロセッサ10cは、関連するマーカーのフィールドの
第3の位置にある自身のビットを設定した後、試験のため全マーカーのフィール
ドを読む。この場合、他のビットが設定されていないので、プロセッサ10cは、
読み出しまたは書き込みのために、そのレコードにアクセスすることができる。
衝突を検出したジョブがロールバックすると、例えば生成の大域的順番によって
は、前記ジョブと衝突したジョブをロールバックすることも必要であることに注
意されたい。
【0075】 好適なマーカーのフィールドをつくる方法は、上に説明した1ビットではなく
、プロセッサごとに2ビットを設けることである。1ビットは書き込み用であり
、他の1ビットは読み出し用である。このようにすると、ほとんど読み出される
だけのデータに起因するロールバックは最も少なくなる。プロセッサごとではな
く、ジョブごとにマーカーのフィールドを設けることも可能である。
【0076】 衝突検出に関する別の方法はアドレス比較法と呼ばれており、この方法では、
タスクの終了時に読み出しアドレスと書き込みアドレスが比較される。マーカー
法と比較した場合の主な違いは、他のプロセッサによるアクセスがタスクの開始
時点でチェックされず、撤収する時点だけでチェックされることである。本特許
出願人の国際特許出願、WO 88/02513に、アドレス比較法を実施する特殊なタイ
プの従属性チェックユニットの例が説明されている。
【0077】 通常、既存の逐次実行形プログラムの応用ソフトウエアは巨額な投資であり、
単一プロセッサ・システムの場合、何千行か何万行かのソフトウエア・コードが
既に存在している。既製の標準的マイクロプロセッサを使用して複数のプロセッ
サを実現する場合、既存の応用ソフトウエアを自動変換するとともに、多分バー
チャル・マシン/オペレーティングシステムを修正することにより、すべての既
存の応用ソフトウエアを使用することができる。このような自動変換は、望まし
くは再コンパイルまたは同等な方法で実行される。バーチャル・マシン/オペレ
ーティングシステムを修正すると、既存の応用ソフトウエアが複数のプロセッサ
で実行される場合のデータの一貫性をサポートする。一方、所有権を伴う設計(
proprietary design)による特殊なハードウエアとして複数のプロセッサが実現
されていると、直接その多重プロセッサ環境に応用ソフトウエアを移行すること
ができる。したがって、ソフトウエアのすべてのコードを多重プロセッサ環境に
移行して再使用できるので、時間と金を節約することができる。
【0078】 階層化した観点から、先行技術における単一プロセッサ・システムを示すこと
ができる。標準的なマイクロプロセッサのようなプロセッサが最下位層にある。
次のレベルにオペレーティングシステムが含まれ、応用ソフトウエアを解釈する
バーチャル・マシンは最上位レベルにある。
【0079】 階層化した観点から、多重プロセッサ・システムを示すこともできる。複数の
メモリ共用プロセッサが最下位レベルにある。次にオペレーティング・システム
がくる。一例として、SUNのワークステーションで走行するAPZエミュレータ、SI
MAXのような高性能コンパイラ・エミュレータあるいは公知のJavaバーチャル・
マシンなどでよいバーチャル・マシンは、多重プロセッサのサポートやデータの
一貫性に関連するサポートのために修正される。一般に逐次実行形プログラムの
応用ソフトウエアは、データの一貫性に関連するサポート用コードを単純に追加
し、コンパイルされていれば再コンパイルし、さらにインタプリターが使用され
ていればインタプリターを修正するか、オブジェクトコードを後処理して適切な
場所にデータの一貫性をサポートする命令を挿入することによって変換される。
【0080】 変数のマーキングにもとづく衝突検出の場合、以下のステップを採用して、単
一プロセッサ・システム用に書かれた応用ソフトウエアの移行を可能にすること
ができる。変数に対する各書き込みアクセスの前に、アドレスと変数の初期状態
を格納するコードを応用ソフトウエアに挿入して、正しいロールバックを可能に
する。変数に対する各読み出しアクセスと各書き込みアクセスの前に、マーカー
のフィールドにマーカー・ビットを設定し、変数のアドレスを格納するとともに
マーカーのフィールドをチェックするコードがソフトウエアに挿入される。次に
応用ソフトウエアは再コンパイル、再解釈または後処理される。衝突検出に関連
するサポート、ロールバックの実施さらにはマーカーのフィールドのリセットを
可能にするため、ハードウエア/オペレーティングシステム/バーチャル・マシ
ンも修正される。したがって、マーカーのフィールドをチェックするコードの実
行時に衝突が検出されると、通常、制御はハードウエア/オペレーティングシス
テム/バーチャル・マシンに移り、格納されている修正された変数のコピーを使
用して、これらの資源がロールバックを実行する。さらに、或るジョブが撤収す
ると、ハードウエア/オペレーティングシステム/バーチャル・マシンは、格納
されている、そのジョブによってアクセスされた変数のアドレスで与えられる各
マーカーのフィールドの該当ビットを取り込んでリセットする。
【0081】 単一プロセッサ・システムで実行するための既存の応用ソフトウエアが多重処
理(multiprocessing)システムで走行するように移行され、該ソフトウエアを
1ステップずつ連続して修正できるので、可能なかぎり、かつ可能な場合に該ソ
フトウエアの「並列度」を更に上げることにより、いっそう性能を向上させるこ
とができる。
【0082】 複数のスレッドを用いるソフトウエア(multithreaded software)を設計する
か、ある種のプログラミング言語の並列構造を使用することにより、例えば、ま
ったく新しい応用ソフトウエアとして、応用ソフトウエアをゼロから設計しても
よいことは勿論である。
【0083】 図8は、本発明によるジョブの処理方法の主な特徴を示す流れ図である。この
手順はステップ40で始まる。ステップ41で、ジョブが共通なジョブ待ち行列
に格納される。実行スケジューリングは、第1のアルゴリズムに従ってステップ
42で実行される。ステップ43で、ジョブが自身のスケジュールに入れられた
プロセッサでそれらのジョブが処理される。ステップ44では、例えば、データ
の衝突検出を使用して、何らかのデータ従属性を解決する。ステップ45で、第
1のアルゴリズムと異なる第2のアルゴリズムに従って、最終的にジョブが撤収
するかコミットされる。手順はステップ46で終了する。上に説明したように、
各種ステップを異なる順番で実行してもよい。例えば、ジョブをジョブ待ち行列
に格納した時点で実際のコミット・スケジューリングを実行してもよい。格納す
るステップと関連させて実行スケジューリングを実行してもよいが、そのジョブ
を実際に実行する直前でなければならない。
【0084】 図6は、本発明による1つまたはそれ以上の処理システムが実施されている通
信プロセッサ・システムの模式図である。通信プロセッサ・システム2は、PSTN
(Public Switched Telephone Network:公衆電話交換網)通信網、PLMN (Publi
c Land Mobile Network:公衆地上移動電話網)通信網、ISDN (Integrated Servi
ces Digital Network:サービス統合ディジタル網) 通信網およびATM (Asynchro
nous Transfer Mode:非同期転送モード)通信網のような各種のベアラ・サービ
ス通信網をサポートすることができる。基本的に通信プロセッサ・システム2は
、通常、中継線群にグループ化されている物理リンクで接続されたスイッチング
/ルーティング・ノード50-1〜50-6を含む。スイッチング/ルーティング・ノー
ド50-1〜50-4にはアクセスポイントがあり、電話機51-1〜51-4やコンピュータ52
-1〜52-4のようなアクセス端末は、市内局(示さず)を介してそれらのアクセス
ポイントに接続される。スイッチング/ルーティング・ノード50-5は、移動体通
信交換局(MSC)53に接続されている。MSC53は、2つの基地局コントローラ54-1
、54-2とホーム・ロケーション・レジスタ(HLR)ノード55に接続されている。
第1のBSC54-1は、1つまたはそれ以上の移動機57-1、57-2と交信するいくつか
の基地局56-1、56-2に接続されている。同様に、第2のBSC54-2は、1つまたは
それ以上の移動機57-3と交信するいくつかの基地局56-3、56-4に接続されている
。スイッチング/ルーティング・ノード50-6は、データベース・システム(DBS
)が設けられているホスト・コンピュータ58に接続されている。プロセッサ・シ
ステム2に接続されたコンピュータ52-1〜52-4のようなユーザー端末は、ホスト
・コンピュータ58のデータベース・システムからのデータベース・サービスを要
求することができる。例えば、Javaサーバーのようなサーバー59は、スイッチン
グ/ルーティング・ノード50-4に接続されている。図6の通信プロセッサ・シス
テムには、業務用通信網のような専用通信網(示さず)を接続することができる
【0085】 通信システム2は、通信網に接続されているユーザーに各種のサービスを提供
する。そのようなサービスの例は、PSTNやPLMNにおける通常の電話の呼、メッセ
ージ・サービス、LANの相互接続、高度通信網(IN)サービス、ISDNサービス、C
TI(コンピュータと電話の統合)サービス、ビデオ会議、ファイル転送、いわゆ
るインターネットへのアクセス、ページング・サービス、ビデオ・オン・デマン
ドなどである。
【0086】 本発明によれば、プロセッサ・システム2の各スイッチングノード50は、望ま
しくは本発明による処理システム1-1〜1-6が設けられている。呼の設定は、例え
ば、処理システムに一連のジョブを実行することを要求する。この一連のジョブ
はプロセッサ・レベルの呼の設定サービスを定義する。MSC53、BSC54-1、54-2、
HLRノード55、ホスト・コンピュータ58および通信システム2のサーバー59のそ
れぞれ1つに、本発明による処理システムが配置されることが望ましい。
【0087】 例えば、インターネット・プロトコル(IP)のパケットを演算するサーバーは
、本発明による処理システムを備えている。その処理システムのスケジューラを
使用して、1つかつ同一の伝送制御プロトコル(TCP)のセッションに属するIP
パケットを、1つかつ同一プロセッサのスケジュールに入れることができる。
【0088】 「イベントを使用するプロセッサ・システム」という用語は、電気通信、デー
タ通信およびトランザクション指向プロセッサ・システムを含むが、それに限定
されるものではない。
【0089】 「メモリ共用プロセッサ」という用語は、既製の標準的マイクロプロセッサに
限定されるものではなく、応用ソフトウエアと全処理ユニットにアクセスできる
データを備えた共通メモリに対して動作する対象形多重プロセッサや特殊なハー
ドウエアのような、いかなるタイプの処理ユニットも含む。このことは、共有メ
モリがいくつかの共有メモリユニットに分配され、各種プロセッサに分配された
共有メモリの各種部分が異なってもよいように、アクセスが対象ではないプロセ
ッサ・システムを含む。
【0090】 上に説明した実施例は、例として与えられているに過ぎず、本発明がこれらの
例に限定されるものではないことを理解されたい。ここに開示され、特許請求さ
れた基本的な原理を保有する修正、変更および改善は、本発明の範囲と趣旨の中
に存在するものとする。
【図面の簡単な説明】
【図1】 本発明の一実施例による処理システムの模式図。
【図2】 本発明の別の実施例による処理システムの模式図。
【図3a】 本発明による共通なジョブ待ち行列の一実施例を示す模式的ブロック図。
【図3b】 本発明による共通なジョブ待ち行列の別の実施例を示す模式的ブロック図。
【図3c】 本発明による共通なジョブ待ち行列の実施例の代替例を示す模式的ブロック図
【図3d】 本発明による分割された共通なジョブ待ち行列の実施例を示す模式的ブロック
図。
【図4a】 本発明による処理システムにおいて、各種通信チャネルから到着するジョブの
経路を示す模式図。
【図4b】 本発明による処理システムにおいて、内部で生成されたジョブの経路を示す模
式図。
【図4c】 本発明による処理システムにおいて、各種目標に送られるジョブの経路を示す
模式図。
【図4d】 本発明による処理システムにおいて、各種データ源からデータを要求するジョ
ブの経路を示す模式図。
【図5】 ブロック/オブジェクト指向設計のメモリ共用ソフトウエアを備えた処理シス
テムの模式的ブロック図。
【図6】 本発明による通信プロセッサ・システムを示す図。
【図7】 本発明とともに使用できるデータの一貫性維持方法におけるマーカのプロセス
を示す模式図。
【図8】 本発明に従って、ジョブを操作するプロセスを示す流れ図。
───────────────────────────────────────────────────── フロントページの続き (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)発明者 ソホニイ、ミリンド インド国 モムバイ、ヒルサイド、シーエ スアールイー クオーターズ、 シー − 147、ポワイ、インディアン インスチ チュート オブ テクノロジイ (72)発明者 ティケカル、ニクヒル インド国 バンガローレ、リッチモンド ロード、 センチュリー パーク、シー 321 Fターム(参考) 5B045 BB35 DD01 DD13 GG11 5B098 AA02 AA10 GA03 GA05 GA08 GB09 GB13 HH00

Claims (56)

    【特許請求の範囲】
  1. 【請求項1】 処理システム(1; 1-1 - 1-12)であって、 着信するジョブ用のジョブ待ち行列(16)と、 ジョブを並列実行するための複数のメモリ共用プロセッサ(10a-10e)と、 第1のアルゴリズムに従って、前記プロセッサによる実行スケジュールに前記
    ジョブを入れるためのスケジューラ(17)と、 前記共有メモリ(11)のデータが前記プロセッサ(10a-10e)によって操作さ
    れる場合、並列ジョブ間のデータの一貫性を保証する手段(14)と、 前記第1のアルゴリズムと異なる第2のアルゴリズムに従って、前記ジョブを
    撤収させる手段(18)と、 を備えた処理システム。
  2. 【請求項2】 請求項1記載の処理システムであって、前記撤収させる手段
    (18)とスケジューラ(17)は、別々の手段(distributed means)であることを
    特徴とする処理システム。
  3. 【請求項3】 請求項1または請求項2に記載の処理システムであって、前
    記撤収させる手段(18)は、先入れ先出しの原理に従って動作することを特徴と
    する処理システム。
  4. 【請求項4】 請求項3記載の処理システムであって、前記撤収させる手段
    (18)は、最も古いジョブが最初に撤収する大域的順番に従ってジョブを撤収さ
    せることを特徴とする処理システム。
  5. 【請求項5】 請求項1〜請求項4のいずれかに記載の処理システムであっ
    て、前記第1のアルゴリズムは、特定アプリケーションの特性、演算フェーズお
    よび/または前記処理システム(1; 1-1 - 1-12)のハードウエア・アーキテク
    チャーに一時的または間欠的に適応することを特徴とする処理システム。
  6. 【請求項6】 請求項1〜請求項5のいずれかに記載の処理システムであっ
    て、前記スケジューラ(17)は、所定の発生源で発生したジョブを、1つかつ同
    一プロセッサのスケジュールに入れるように配置されていることを特徴とする処
    理システム。
  7. 【請求項7】 請求項6記載の処理システムであって、前記発生源は、入力
    ポート、外部プロセッサおよび/またはハードウエア・デバイスの中から選択さ
    れることを特徴とする処理システム。
  8. 【請求項8】 請求項1〜請求項7のいずれかに記載の処理システムであっ
    て、前記スケジューラ(17)は、前記複数のプロセッサの第1のプロセッサで発
    生したジョブを、前記第1のプロセッサのスケジュールに入れるように配置され
    ていることを特徴とする処理システム。
  9. 【請求項9】 請求項1〜請求項5のいずれかに記載の処理システムであっ
    て、前記スケジューラ(17)は、所定の目標に向けられたジョブを、1つかつ同
    一プロセッサのスケジュールに入れるように配置されていることを特徴とする処
    理システム。
  10. 【請求項10】 請求項1〜請求項5のいずれかに記載の処理システムであ
    って、前記ジョブは、前記共有メモリ(11)の各種データ領域(39a-c)から入
    力データを要求し、前記スケジューラは、前記データ領域から入力データを要求
    するジョブを、1つかつ同一プロセッサのスケジュールに入れるように配置され
    ていることを特徴とする処理システム。
  11. 【請求項11】 請求項1〜請求項5のいずれかに記載の処理システムであ
    って、前記共有メモリ内のソフトウエアは、いくつかのソフトウエア・ブロック
    を含み、各ジョブは、少なくとも1つのソフトウエア・ブロックに目標が定めら
    れ、前記スケジューラは、ブロックのクラスタを各プロセッサに割り当てて、目
    標にもとづくスケジューリングを実行するように配置されていることを特徴とす
    る処理システム。
  12. 【請求項12】 請求項1〜請求項5のいずれかに記載の処理システムであ
    って、前記スケジューラ(17)は、同一通信チャネルで到着するジョブを、1つ
    かつ同一プロセッサのスケジュールに入れるように配置されていることを特徴と
    する処理システム。
  13. 【請求項13】 請求項1〜請求項12のいずれかに記載の処理システムで
    あって、前記スケジューラ(17)は、最も重い負荷をもつプロセッサのスケジュ
    ールに入れられたジョブを、他の所定のプロセッサのスケジュールに定期的に入
    れ直すように配置されていることを特徴とする処理システム。
  14. 【請求項14】 請求項1〜請求項13のいずれかに記載の処理システムで
    あって、前記第1のアルゴリズムは、静的ジョブの分類と従属性の解析にもとづ
    いていることを特徴とする処理システム。
  15. 【請求項15】 請求項1〜請求項14のいずれかに記載の処理システムで
    あって、前記プロセッサ(10a-e)は、いくつかのジョブを推論的に並列に実行
    するように配置されており、前記データの一貫性を保証する手段(14)は、 従属性を検出する手段と、 従属性の衝突が検出されたジョブを元に戻すとともに、スケジュールに入れ直
    す手段と、 を含むことを特徴とする処理システム。
  16. 【請求項16】 請求項15記載の処理システムであって、各プロセッサ(
    10a-e)は、共有メモリ(11)内の変数の使用をマークする手段を含み、従属性
    を検出する前記手段は、前記マーキングにもとづいて、変数へのアクセスの衝突
    を検出する手段を含むことを特徴とする処理システム。
  17. 【請求項17】 請求項16記載の処理システムであって、前記マークする
    手段は、変数のグループをマークすることを特徴とする処理システム。
  18. 【請求項18】 請求項15記載の処理システムであって、前記共有メモリ
    (11)内のソフトウエアはいくつかのソフトウエア・ブロックを含み、各ジョブ
    はソフトウエア・ブロックに関連づけられ、各プロセッサ(10a-e)は前記ブロ
    ック内の変数の使用をマークする手段を含み、前記従属性検出手段は前記マーキ
    ングにもとづいて、変数へのアクセスの衝突を検出する手段を含むことを特徴と
    する処理システム。
  19. 【請求項19】 請求項1〜請求項18のいずれかに記載の処理システムで
    あって、前記ジョブ待ち行列(16)内の各ジョブは、前記第1のアルゴリズムに
    従って前記ジョブが実行されることになっている前記プロセッサを指示する情報
    (26,28)を含むことを特徴とする処理システム。
  20. 【請求項20】 請求項1〜請求項19のいずれかに記載の処理システムで
    あって、前記ジョブ待ち行列(16)内のジョブは、前記第2のアルゴリズムに従
    って撤収できる順番を指示する情報(25,27)に関連づけられていることを特徴
    とする処理システム。
  21. 【請求項21】 請求項1〜請求項20のいずれかに記載の処理システムで
    あって、前記ジョブ待ち行列(16)は複数のセクションに分割され、各ジョブは
    、前記第1のアルゴリズムに従って、前記ジョブが実行されることになっている
    前記プロセッサに依存する特定のセクション(28)に格納されることを特徴とす
    る処理システム。
  22. 【請求項22】 請求項1〜請求項21のいずれかに記載の処理システムで
    あって、前記ジョブ待ち行列(16)は、互いに依存する物理的に分離された部分
    を備えていることを特徴とする処理システム。
  23. 【請求項23】 請求項22記載の処理システムであって、前記プロセッサ
    (10a-e)の第1のプロセッサに対する前記分離された部分の前記アクセス時間
    は、前記プロセッサ(10a-e)の第2のプロセッサに対する前記分離された部分
    の前記アクセス時間と異なることを特徴とする処理システム。
  24. 【請求項24】 処理システム(1; 1-1 - 1-12)を備えた通信プロセッサ
    ・システム(2)であって、前記処理システムは、 着信するジョブ用のジョブ待ち行列(16)と、 ジョブを並列実行するための複数のメモリ共用プロセッサ(10a-10e)と、 第1のアルゴリズムに従って、前記プロセッサ(10a-e)による実行スケジュ
    ールに前記ジョブを入れるためのスケジューラ(17)と、 前記共有メモリ(11)のデータが前記プロセッサ(10a-10e)によって操作さ
    れる場合、並列ジョブ間のデータの一貫性を保証する手段(14)と、 前記第1のアルゴリズムと異なる第2のアルゴリズムに従って、前記ジョブを
    撤収させる手段(18)と、 を備えた通信プロセッサ・システム。
  25. 【請求項25】 請求項24記載の通信プロセッサ・システムであって、前
    記撤収させる手段(18)と前記スケジューラ(17)は、別々の手段であることを
    特徴とする通信プロセッサ・システム。
  26. 【請求項26】 請求項24または請求項25に記載の通信プロセッサ・シ
    ステムであって、前記撤収させる手段(18)は、先入れ先出しの原理に従って動
    作することを特徴とする通信プロセッサ・システム。
  27. 【請求項27】 請求項24、25または請求項26に記載の通信プロセッ
    サ・システムであって、前記第1のアルゴリズムは、特定アプリケーションの特
    性、演算フェーズおよび/または前記通信プロセッサ・システム(2)のハード
    ウエア・アーキテクチャーに一時的または間欠的に適応することを特徴とする通
    信プロセッサ・システム。
  28. 【請求項28】 請求項24〜請求項27のいずれかに記載の通信プロセッ
    サ・システムであって、前記スケジューラ(17)は、前記複数のプロセッサの第
    1のプロセッサで発生したジョブを、前記第1のプロセッサのスケジュールに入
    れるように配置されていることを特徴とする通信プロセッサ・システム。
  29. 【請求項29】 請求項24〜請求項27のいずれかに記載の通信プロセッ
    サ・システムであって、前記スケジューラ(17)は、所定の発生源で発生したジ
    ョブを、1つかつ同一プロセッサのスケジュールに入れるように配置されている
    ことを特徴とする通信プロセッサ・システム。
  30. 【請求項30】 請求項29記載の通信プロセッサ・システムであって、前
    記処理システム(1-12)は、インターネット・プロトコル(IP)のパケットを演
    算するサーバー(59)に備えられ、前記スケジューラ(17)は、1つかつ同一の
    伝送制御プロトコル(TCP)のセッションに属するIPパケットを、1つかつ同一
    プロセッサのスケジュールに入れるように配置されていることを特徴とする通信
    プロセッサ・システム。
  31. 【請求項31】 請求項24〜請求項27のいずれかに記載の通信プロセッ
    サ・システムであって、前記スケジューラ(17)は、所定の目標に向けられたジ
    ョブを、1つかつ同一プロセッサのスケジュールに入れるように配置されている
    ことを特徴とする通信プロセッサ・システム。
  32. 【請求項32】 請求項24〜請求項27のいずれかに記載の通信プロセッ
    サ・システムであって、前記スケジューラ(17)は、同一通信チャネルで到着す
    るジョブを、1つかつ同一プロセッサのスケジュールに入れるように配置されて
    いることを特徴とする通信プロセッサ・システム。
  33. 【請求項33】 請求項24〜請求項32のいずれかに記載の通信プロセッ
    サ・システムであって、前記スケジューラ(17)は、最も重い負荷をもつプロセ
    ッサのスケジュールに入れられたジョブを、他の所定のプロセッサのスケジュー
    ルに定期的に入れ直すように配置されていることを特徴とする通信プロセッサ・
    システム。
  34. 【請求項34】 請求項24〜請求項33のいずれかに記載の通信プロセッ
    サ・システムであって、前記第1のアルゴリズムは、静的ジョブの分類と従属性
    の解析にもとづいていることを特徴とする通信プロセッサ・システム。
  35. 【請求項35】 ジョブの並列実行のための複数のメモリ共用プロセッサ(
    10a-e)を備えた処理システム(1; 1-1 - 1-12)におけるジョブ処理の方法であ
    って、 着信するジョブをジョブ待ち行列(16)に格納するステップと、 第1のアルゴリズムに従って、前記ジョブ待ち行列(16)内の前記ジョブを前
    記プロセッサ(10a-e)のスケジュールに入れるステップと、 前記プロセッサ(10a-e)で前記ジョブを実行するステップと、 前記共有メモリ(11)のデータが前記プロセッサ(10a-e)によって操作され
    る場合、並列ジョブ間のデータの一貫性を保証する手段と、 前記第1のアルゴリズムと異なる第2のアルゴリズムに従って、前記ジョブを
    撤収させる手段と、 を含むジョブ処理の方法。
  36. 【請求項36】 請求項35記載のジョブ処理の方法であって、前記第2の
    アルゴリズムは、先入れ先出しの原理に従って動作することを特徴とするジョブ
    処理の方法。
  37. 【請求項37】 請求項36記載のジョブ処理の方法であって、前記第2の
    アルゴリズムに従って前記撤収させるステップは、前記ジョブの大域的順番にも
    とづいており、前記大域的順番では前記ジョブ待ち行列(16)内の前記最も古い
    ジョブが最初に撤収することを特徴とするジョブ処理の方法。
  38. 【請求項38】 請求項35〜請求項37のいずれかに記載のジョブ処理の
    方法であって、特定アプリケーションの特性、演算フェーズおよび/または前記
    処理システム(1; 1-1 - 1-12)のハードウエア・アーキテクチャーに前記第1
    のアルゴリズムを一時的または間欠的に適応させる、さらなるステップを特徴と
    するジョブ処理の方法。
  39. 【請求項39】 請求項35〜請求項38のいずれかに記載のジョブ処理の
    方法であって、前記スケジュールに入れるステップは、前記プロセッサの第1の
    プロセッサで発生したジョブを、前記第1のプロセッサのスケジュールに入れる
    前記ステップを含むことを特徴とするジョブ処理の方法。
  40. 【請求項40】 請求項35〜請求項38のいずれかに記載のジョブ処理の
    方法であって、前記スケジュールに入れるステップは、所定の発生源で発生した
    ジョブを、1つかつ同一プロセッサのスケジュールに入れる前記ステップを含む
    ことを特徴とするジョブ処理の方法。
  41. 【請求項41】 請求項35〜請求項38のいずれかに記載のジョブ処理の
    方法であって、前記スケジュールに入れるステップは、所定の目標に向けられた
    ジョブを、1つかつ同一プロセッサのスケジュールに入れる前記ステップを含む
    ことを特徴とするジョブ処理の方法。
  42. 【請求項42】 請求項35〜請求項38のいずれかに記載のジョブ処理の
    方法であって、ジョブは、前記共有メモリ(11)の各種データ領域(39a-c)か
    ら入力データを要求し、前記スケジュールに入れるステップは、前記データ領域
    から入力データを要求するジョブを、1つかつ同一プロセッサのスケジュールに
    入れる前記ステップを含むことを特徴とするジョブ処理の方法。
  43. 【請求項43】 請求項35〜請求項38のいずれかに記載のジョブ処理の
    方法であって、前記共有メモリ(11)内のソフトウエアは、いくつかのソフトウ
    エア・ブロックを含み、各ジョブは、少なくとも1つのソフトウエア・ブロック
    に目標が定められ、前記スケジュールに入れるステップは、目標にもとづくスケ
    ジューリングを実行するように、ブロックのクラスタを各プロセッサに割り当て
    る前記ステップを含むことを特徴とするジョブ処理の方法。
  44. 【請求項44】 請求項35〜請求項38のいずれかに記載のジョブ処理の
    方法であって、前記スケジュールに入れるステップは、同一通信チャネルで到着
    するジョブを、1つかつ同一プロセッサのスケジュールに入れる前記ステップを
    含むことを特徴とするジョブ処理の方法。
  45. 【請求項45】 請求項35〜請求項44のいずれかに記載のジョブ処理の
    方法であって、前記第1のアルゴリズムに適応する前記スケジュールに入れるス
    テップは、最も重い負荷をもつプロセッサのスケジュールに入れられたジョブを
    、他の所定のプロセッサのスケジュールに間欠的に入れ直すステップを含むこと
    を特徴とするジョブ処理の方法。
  46. 【請求項46】 請求項35〜請求項45のいずれかに記載のジョブ処理の
    方法であって、前記スケジュールに入れるステップは、静的ジョブの分類と従属
    性の解析にもとづいてジョブをスケジュールに入れるステップを含むことを特徴
    とするジョブ処理の方法。
  47. 【請求項47】 請求項35〜請求項46のいずれかに記載のジョブ処理の
    方法であって、前記ジョブの実行は、ジョブを推論的に並列に実行するステップ
    を含み、前記データの一貫性を保証するステップは、 従属性の衝突を検出するステップと、 従属性の衝突が検出され推論的に実行されるジョブを元に戻すとともに、開始
    し直すステップと、 を含むことを特徴とするジョブ処理の方法。
  48. 【請求項48】 請求項47記載のジョブ処理の方法であって、前記共有メ
    モリ(11)内の変数の使用をマークする各プロセッサ(10a-e)のさらなるステ
    ップと、従属性の衝突を検出する前記ステップは、前記マーキングにもとづいて
    、変数へのアクセスの衝突を検出する前記ステップを含むことを特徴とするジョ
    ブ処理の方法。
  49. 【請求項49】 請求項48記載のジョブ処理の方法であって、前記マーク
    するステップは、変数のグループをマークすることを含むことを特徴とするジョ
    ブ処理の方法。
  50. 【請求項50】 請求項35〜請求項49のいずれかに記載のジョブ処理の
    方法であって、前記スケジュールに入れるステップは、前記ジョブ待ち行列(16
    )に新しいジョブが入ったことに関連して実行されることを特徴とするジョブ処
    理の方法。
  51. 【請求項51】 請求項50記載のジョブ処理の方法であって、前記スケジ
    ュールに入れるステップは、前記ジョブ待ち行列(16)に実行タグ(26)を設定
    するステップを更に含み、前記実行タグ(26)は、ジョブが実行されることにな
    っているプロセッサを指示することを特徴とするジョブ処理の方法。
  52. 【請求項52】 請求項50記載のジョブ処理の方法であって、前記スケジ
    ュールに入れるステップは、前記ジョブ待ち行列(16)のセクション(28)にジ
    ョブを格納するステップを更に含み、前記セクション(28)は、前記ジョブが実
    行されることになっているプロセッサに依存することを特徴とするジョブ処理の
    方法。
  53. 【請求項53】 請求項35〜請求項49のいずれかに記載のジョブ処理の
    方法であって、前記スケジュールに入れるステップは、前記プロセッサの1つが
    空いて新しいジョブを開始することに関連して実行されることを特徴とするジョ
    ブ処理の方法。
  54. 【請求項54】 請求項35〜請求項63のいずれかに記載のジョブ処理の
    方法であって、前記第2のアルゴリズムに従って、ジョブが撤収できる順番を決
    定する撤収スケジュールをつくる撤収するステップを更に有し、前記撤収するス
    テップは、前記撤収スケジューリングに従ってジョブを撤収させるステップを含
    むことを特徴とするジョブ処理の方法。
  55. 【請求項55】 請求項54記載のジョブ処理の方法であって、前記撤収ス
    ケジューリングは、前記ジョブ待ち行列内に撤収タグ(27)を設定するステップ
    を含み、前記撤収タグ(27)は、ジョブが撤収する前記順番を指示することを特
    徴とするジョブ処理の方法。
  56. 【請求項56】 請求項35〜請求項55のいずれかに記載のジョブ処理の
    方法であって、単一プロセッサ・システム用応用ソフトウエアを実行する前記複
    数のメモリ共用プロセッサ(10a-e)に前記ソフトウエアを移行する、さらなる
    ステップを特徴とするジョブ処理の方法。
JP2000582886A 1998-11-16 1999-11-12 処理システムのスケジューリング Pending JP2002530738A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SE9803901A SE9803901D0 (sv) 1998-11-16 1998-11-16 a device for a service network
SE9803901-9 1998-11-16
PCT/SE1999/002065 WO2000029943A1 (en) 1998-11-16 1999-11-12 Processing system scheduling

Publications (1)

Publication Number Publication Date
JP2002530738A true JP2002530738A (ja) 2002-09-17

Family

ID=50202831

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000582886A Pending JP2002530738A (ja) 1998-11-16 1999-11-12 処理システムのスケジューリング

Country Status (7)

Country Link
EP (1) EP1131704B1 (ja)
JP (1) JP2002530738A (ja)
KR (1) KR100400165B1 (ja)
AU (1) AU1437400A (ja)
BR (1) BR9915366A (ja)
CA (1) CA2350798A1 (ja)
WO (1) WO2000029943A1 (ja)

Families Citing this family (15)

* 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 マルチプロセッサシステム
KR100441742B1 (ko) * 2002-07-26 2004-07-23 (주)엔텔스 정보교환 버스를 이용한 프로세스간 통신 데이터 제어방법및 그 시스템
US7020746B2 (en) * 2003-01-28 2006-03-28 Microsoft Corporation Method and system for an atomically updated, central cache memory
US8054487B2 (en) 2004-12-16 2011-11-08 International Business Machines Corporation Mechanism to create a reservation against a future scheduling object instantiation
KR100731969B1 (ko) * 2005-06-28 2007-06-25 엠텍비젼 주식회사 복수 경로를 통한 메모리 공유 방법 및 장치
KR100728650B1 (ko) * 2005-07-26 2007-06-14 엠텍비젼 주식회사 복수 경로를 통한 다중 분할된 메모리 공유 방법 및 장치
US7926057B2 (en) 2005-12-15 2011-04-12 International Business Machines Corporation Scheduling of computer jobs employing dynamically determined top job party
US7865896B2 (en) 2005-12-15 2011-01-04 International Business Machines Corporation Facilitating scheduling of jobs by decoupling job scheduling algorithm from recorded resource usage and allowing independent manipulation of recorded resource usage space
KR100716184B1 (ko) * 2006-01-24 2007-05-10 삼성전자주식회사 네트워크 프로세서에서의 큐 관리 방법 및 그 장치
KR100944912B1 (ko) * 2007-12-14 2010-03-03 한국전자통신연구원 서버 가상화 환경을 위한 디스크 입출력 스케쥴러 및 그의스케쥴링 방법
CN101408852B (zh) * 2008-11-26 2011-09-28 阿里巴巴集团控股有限公司 一种调度任务的方法、装置和***
KR101084044B1 (ko) 2010-03-03 2011-11-16 서울대학교산학협력단 고화질 멀티 포맷 비디오 코덱 시스템을 위한 멀티 프로세서 플랫폼 기반 시스템
US9170849B2 (en) * 2012-01-09 2015-10-27 Microsoft Technology Licensing, Llc Migration of task to different pool of resources based on task retry count during task lease
US11599752B2 (en) 2019-06-03 2023-03-07 Cerebri AI Inc. Distributed and redundant machine learning quality management
KR102307641B1 (ko) * 2021-04-30 2021-10-01 나무기술 주식회사 클라우드 운영 데이터 분석을 위한 병렬 처리 제어 시스템

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10187464A (ja) * 1996-12-16 1998-07-21 Internatl Business Mach Corp <Ibm> マルチスカラ・プログラムを作成する方法およびシステム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0230721A3 (en) * 1986-01-22 1988-04-27 Mts Systems Corporation Multiprocessor control system
US5379428A (en) * 1993-02-01 1995-01-03 Belobox Systems, Inc. Hardware process scheduler and processor interrupter for parallel processing computer systems
US5848257A (en) * 1996-09-20 1998-12-08 Bay Networks, Inc. Method and apparatus for multitasking in a computer system
JPH10143382A (ja) * 1996-11-08 1998-05-29 Hitachi Ltd 共有メモリ型マルチプロセッサシステムの資源管理方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10187464A (ja) * 1996-12-16 1998-07-21 Internatl Business Mach Corp <Ibm> マルチスカラ・プログラムを作成する方法およびシステム

Also Published As

Publication number Publication date
WO2000029943A1 (en) 2000-05-25
CA2350798A1 (en) 2000-05-25
EP1131704B1 (en) 2014-03-26
AU1437400A (en) 2000-06-05
EP1131704A1 (en) 2001-09-12
KR100400165B1 (ko) 2003-10-01
KR20010080208A (ko) 2001-08-22
BR9915366A (pt) 2001-07-31

Similar Documents

Publication Publication Date Title
US9934072B2 (en) Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
CN100557570C (zh) 多处理器***
Squillante et al. Using processor-cache affinity information in shared-memory multiprocessor scheduling
US6389446B1 (en) Multi-processor system executing a plurality of threads simultaneously and an execution method therefor
JP3771957B2 (ja) プロセッサ・アーキテクチャにおける分散制御のための装置および方法
USRE45086E1 (en) Method and apparatus for prefetching recursive data structures
US8904154B2 (en) Execution migration
JP2002530738A (ja) 処理システムのスケジューリング
US20140208331A1 (en) Methods of processing core selection for applications on manycore processors
CN100492282C (zh) 处理***、通信***及在处理***中处理作业的方法
JP2001236221A (ja) マルチスレッドを利用するパイプライン並列プロセッサ
Mikschl et al. Msparc: a multithreaded Sparc
US20080134187A1 (en) Hardware scheduled smp architectures
CA2350922C (en) Concurrent processing for event-based systems
Thitikamol et al. Per-node multithreading and remote latency
Sato et al. EM-C: Programming with explicit parallelism and locality for EM-4 multiprocessor
Bellosa Locality-information-based scheduling in shared-memory multiprocessors
Bhoedjang et al. Friendly and efficient message handling
Ueng et al. Multi-Threaded Design for a Software Distributed Shared Memory Systems
JPH10340197A (ja) キャッシング制御方法及びマイクロコンピュータ
Bhoedjang et al. User-space solutions to thread switching overhead
Lee et al. Feasibility and performance study of a shared disks cluster for real-time processing
CN116244005A (zh) 一种多线程异步数据传输***及方法
Soviani Embedding tree computations into the RAW chip
Nikhil Digital Equipment Corp.

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061026

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090306

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090608

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100525