説明

通信チャネルを介して送られるメッセージ間の調停を行うデータ処理装置および方法

【課題】通信チャネルを介して送られるメッセージ間の調停を行うデータ処理装置および方法を得る。
【解決手段】データ処理装置は各々が受取要素に発せられるメッセージを要求するプロセスを実行する複数の処理要素と、これらの処理要素間で共有されそれを介してメッセージが送られる通信チャネルとを有する。調停回路が通信チャネルを介して送られる多数のメッセージ間の調停を行う調停プロセスを実施する。各処理要素はそこで実行中のプロセスに対する進捗データを発し、進捗データはプロセスに対する待ち時間含意を示す。調停制御回路が各処理要素からの進捗データに応答して、優先順位付けデータを発生するために進捗データが示す各プロセスの待ち時間含意を考慮した優先順位付けプロセスを実施する。優先順位付けデータは調停プロセスを制御するために調停回路に出力される。

【発明の詳細な説明】
【技術分野】
【0001】
(発明の分野)
本発明は通信チャネルを介して送られるメッセージ間の調停を行う、特に、複数の処理要素間で共有される通信チャネルを介して送られるメッセージ間の調停を行うデータ処理装置および方法に関する。
【背景技術】
【0002】
(従来技術の説明)
通信チャネルが複数の処理要素間で共有され、さまざまな処理要素が通信チャネルを介して受取要素へメッセージを発する多くのシステムがある。通信チャネルはいくつかのマスタ装置をシステム・オン・チップ(SoC)装置等のチップ内のいくつかのスレーブ装置と接続する、またはマルチチップ・モジュール内の個別のチップと接続する、さらには印刷回路板構造内のさまざまなモジュールと相互接続するのに使用されるバス相互接続回路の形をとることができる。より大きい規模で、通信チャネルは複数のコンピュータ、または複数の装置を相互接続するのに使用される共有無線リンクにより形成することができる。
【0003】
任意の通信チャネルに対して、そのチャネルの情報搬送容量には限界があり、通信チャネルに関連する待ち時間(latency)もある。並列化技術および高められた動作周波数の使用等の、チャネル容量および待ち時間を変更できるようにする構成上のオプションがある。しかしながら、これらの技術は複雑さ、電力およびエリアにコストを要し、それらは必要な性能に対して取引する必要がある。
【0004】
通信チャネルが複数の処理要素間で共有され、これらの処理要素は処理を実行する時に通信チャネルを介してメッセージを発する必要がある任意のシステムにおいて、通信チャネルが共有される事実により通信チャネルを介して処理されるメッセージの順序に関して判断を行うことが強制され、この判断は調停技術を利用して行われる。SoCの例について考えると、メッセージはトランザクション中にマスタ装置により発せられる信号の形をとることができ、特に、マスタ装置はトランザクションに関連するスレーブ装置を指定する通信チャネル上にアクセス要求を発することで典型的にトランザクションを開始する。この特定の分野において、トランザクションのある順序付けにより全体待ち時間は他の順序付けよりも低くなり、これはメモリコントローラ等の装置がしばしば特殊化するエリアであることが知られている。しかしながら、調停判断の結果そのメッセージが引き止められているプロセスが経験する待ち時間が調停判断により必然的に付加される。したがって、この調停判断が行われる方法はシステムの全体性能に有意の影響を及ぼす。
【0005】
基本的な調停方式は固定優先順位すなわちラウンドロビン(round robin)(公平共有)技術を利用するアルゴリズムを使用する。このような方式はメッセージ・バイ・メッセージベースの調停判断を行うのに限定され、過去になされた選択の限定された量が考慮される。ラウンドロビン方式の例外は現在の優先順位が前の優先順位によって決まることである。しかしながら、両方式共通信チャネルを介して導入される付加待ち時間をメッセージを発する個別プロセス間ではなくメッセージ・バイ・メッセージベースで割り当てるという問題がある。したがって、通信チャネルを通るハイレベルのアクセスを有するメッセージは、通信チャネル内で行われる調停判断の結果時間とともにハイレベルの付加待ち時間を受ける。
【0006】
主としてネットワーク用に開発されている代替技術はQuality−of−Service(QoS)技術であり、それはプロセスが必要な帯域幅および制御された待ち時間特性を有することを保証しようと試みることにより時間ベース見解をとる。それ故、このようなQoS方式は各プロセスを考慮して通信チャネルの帯域幅の一部をそのプロセスに割り当て、各トランザクションまたはメッセージに適用される待ち時間を幾分制御する。しかしながら、既知のQoS方式の限界はこれらのプロセスが実行される時に生じる実際のデータフローの前に各プロセスの特性は知られているものと仮定され、かつその情報の管理に幾分ハイレベルのプロトコルを必要とすることである。それ故、このようなQoS方式は帯域幅や待ち時間特性の変化に対して柔軟性ではなく、特性を前もって知る必要があり、さらにプロセスに必要な特性を提供するように通信チャネルの動作を構成するためのよりハイレベルのプロトコルが必要である。それ故、既存のQoS方式は通信チャネルが性能を提供すると仮定することから始り、この性能をプロセスからの予め定められた要求条件に従って割当てる。それにより予想したものよりも低い帯域幅要求条件を有するプロセスとなって不公平な性能が得られ、予め定められた特性を超える他のプロセスは性能が不足することがある。
【0007】
これら既知のQoS方式のいくつかはネットワーク環境内で受け入れられるように作動できるが、他のタイプのシステム、たとえば、SoCでは共有通信チャネルを介して生じるデータフローはランダムとなって(たとえば、キャッシュミス等により)ダイナミックに変動することがあり、既存のQoS方式には適さない。
【発明の開示】
【発明が解決しようとする課題】
【0008】
したがって、共有通信チャネルを介して送られるメッセージ間の調停を行う改良された技術を提供することが望ましい。
【課題を解決するための手段】
【0009】
(発明の概要)
第1の側面から見ると、本発明は共有通信チャネルを介して送られるメッセージ間の調停を行うデータ処理装置を提供し、それは各々が受取要素に発せられるメッセージを要求するプロセスを実行する複数の処理要素と、複数の処理要素間で共有されそれを介してメッセージが送られる通信チャネルと、通信チャネルを介して送られる多数のメッセージ間の調停を行う調停プロセスを実施する調停回路とを含み、各処理要素はそこで実行中のプロセスに対する進捗データを発するようにされていて、進捗データはプロセスに対する待ち時間含意(latency implications)を示し、さらに、各処理要素からの進捗データに応答して、優先順位付けデータを発生するために進捗データが示す各プロセスの待ち時間含意を考慮した優先順位付けプロセスを実施し、かつ調停プロセスを制御するために調停回路に優先順位付けデータを出力する調停制御回路を含んでいる。
【0010】
本発明に従って、各処理要素はそこで実行中のプロセスに対する進捗データを発するようにされており、進捗データはプロセスに対する待ち時間含意を示す。最終的に、待ち時間が特定レベルまで増加するとプロセスは停止されるが、最初に実行できる十分なバッファリングまたは他の計算があるため、これはすぐには起こらない。さらに、プロセス停止の影響はそのプロセスに非常に依存し、場合によっては破滅的となることがあるが、他のプロセスに対しては停止の影響はあまり重大ではなく、プロセスを完了するのに要する時間が延びるにすぎない。それ故、待ち時間の含意はプロセスに非常に依存し、各実行中プロセスに関して発せられる進捗データはそのプロセスに特定の待ち時間含意を示すことが理解される。
【0011】
さらに、本発明に従って調停制御回路が提供され、それは各処理要素からの進捗データに応答して進捗データにより示される待ち時間含意を考慮した優先順位付けプロセスを実施する。このプロセスの結果として、優先順位付けデータが発生され、それはその調停回路により実施される調停プロセスを制御するためにデータ処理装置により提供される調停回路へ出力される。
【0012】
調停回路の配置は通信チャネルの構造によって決まる。典型的に、調停を実施する必要のある多数のポイントが通信チャネル内にあり、これらの各ポイントにおいて調停をできるように調停回路は通信チャネル全体にわたって分散される。このような各ポイントにおいて、調停制御回路により出力される優先順位付けデータを使用して通信チャネル内のそのポイントに現われる多数のメッセージ間の調停が行われる。
【0013】
本発明を使用して、個別のプロセスの要求条件を考慮して、したがって、調停のQoSスタイルを採用して調停を実施することができるが、既知のQoS方式とは対照的に、このQoSは自動的に決定されてプロセス間に割当てられ、要求条件を前もって知る必要性がなくなる。さらに、本発明のQoS機構はプロセス間の通信の変化にダイナミックに適応する。特に、個別プロセスからの進捗データが変化すると、それは調停制御回路により作り出される優先順位付けデータに影響を及ぼし、次に、データ処理装置の調停回路により実施される調停に影響を及ぼす。
【0014】
通信チャネルを共有する処理要素は多様な形をとることができる。しかしながら、一実施例では、各処理要素は通信チャネルに接続されたマスター装置である。典型的に、通信チャネルを介してメッセージが発せられる受取要素はスレーブ装置であり、個別のトランザクションはマスター装置および選出されたスレーブ装置間で通信チャネルを介していくつかのリードまたはライト転送を行うためにそこでプロセスを実行する時にマスター装置により発せられる。このような実施例では、各メッセージはトランザクションを開始するためにマスター装置の1つにより発せられるアクセス要求の形をとることができる。しかしながら、メッセージの正確な形は通信チャネル上で使用されるプロトコルによって決まる。ARM Limited,Cambridge,United Kingdomにより開発されたAXI(Advanced eXtensible Interface)プロトコル等のバスプロトコルに対して、リードおよびライトデータはトランザクションにより指定されるアドレス転送内に記述されるメッセージの一部を形成するが、パケット化されたシステムでは要求およびデータはメッセージを構成する単一パケットの一部を形成することがある。
【0015】
さまざまな処理要素により実行される個別プロセスは多様な形をとることができる。しかしながら、一実施例では、各プロセスはプログラム・スレッド(thread)であり、各処理要素は単一プログラム・スレッドを実行する。このような実施例では、進捗データはスレッド・バイ・スレッドベースで提供される。
【0016】
代替実施例では、少なくとも1つの処理要素が多数の処理装置を含み、各処理装置がプログラム・スレッドを実行する。この実施例では、処理要素はマルチコアプロセッサであり、進捗データが発せられる「プロセス」はその処理要素のさまざまな処理装置上で実行中のさまざまなプログラム・スレッドの全てからなっている。このようなマルチコアプロセッサを構成するもう1つの方法は個別の各処理装置を個別に処理要素と見なされるマルチコアプロセッサ内に配置して、マルチコアプロセッサ内の各処理装置がそこで実行中のプログラム・スレッドに関連するそれ自体の進捗データを出力することである。
【0017】
データ処理装置は多様な形をとることができるが、一実施例では、SoCの形をとる。通信チャネルを介して生じるさまざまなデータフローがランダムかつダイナミックに変動するため、本発明の技術はSoC装置内で特に有益である。本発明の実施例の技術は要求条件が変動する時にさまざまなプロセスの帯域幅および待ち時間を管理するのに十分柔軟性である。
【0018】
進捗データは多様な形をとることができる。一実施例では、進捗データは関連するプロセスがリアルタイムプロセスであるか非リアルタイムプロセスであるかを識別し、リアルタイムプロセスに対しては進捗データは少なくともそのリアルタイムプロセスにより発せられたメッセージを処理する残り時間を示すスラック(slack)値をさらに識別し、非リアルタイムプロセスに対しては進捗データは少なくとも予め定められた時間にわたるそのプロセスに関連する待ち時間を示す待ち時間値をさらに識別する。
【0019】
本明細書の目的に対して、リアルタイムプロセスはそのプロセスに対する停止の影響が破滅的と見なされて受け入れられない任意のプロセスと考えることができる。その例はディスプレイされた映像の混乱は受け入れられないと見なされる、画面上にディスプレイされる映像を発生しているプロセスである。対照的に、本出願の状況における非リアルタイムプロセスは停止が受け入れられる任意のプロセスを意味し、それ故、停止の影響はあまり重要ではなくプロセスの完了に要する時間が延長される。そのプロセスがリアルタイムプロセスであるか非リアルタイムプロセスであるかの表示の他に、リアルタイムプロセスに対して進捗データはそのリアルタイムプロセスにより発せられたメッセージを処理する残り時間(すなわち、プロセスが停止するまでどれだけ長いか)を示すスラック値をさらに識別する。対照的に、非リアルタイムプロセスに対しては進捗データは少なくとも予め定められた時間にわたりそのプロセスに関連する待ち時間を示す待ち時間値をさらに識別する。予め定められた時間はインプリメンテーションに応じて変動することがある設計パラメータである。予め定められた時間が長いほど、待ち時間値を作り出す時に考慮するヒストリカル情報量は大きくなり、予め定められた時間が短いほど、待ち時間値は迅速に最近の変化に応答して変化し、それ故、調停制御回路により発生される優先順位付けデータは特定のプロセスからのデマンドの最近の変化により迅速に適応する。
【0020】
前記した情報を進捗データに内蔵することにより、調停制御回路はリアルタイムプロセスが停止しないことを保証するのに十分な優先順位付けされることを保証することができるが、リアルタイムプロセスに関連するスラック値が許す場合、非リアルタイムプロセスはそれが経験する待ち時間を低減する目的でリアルタイムプロセスよりも先に優先順位付けすることができる。各非リアルタイムプロセスに対して識別された待ち時間値が予め定められた時間にわたってそのプロセスに関連する待ち時間を示すようにすれば、全体待ち時間を非リアルタイムプロセス間で公平に割り当てることができる。
【0021】
各非リアルタイムプロセスに関連する待ち時間値を作り出すために設けられる回路は多様な形をることができる。たとえば、各プロセスに対して、負値はプロセスを停止せずに付加できる待ち時間を示し正値は既にプロセスに付加された待ち時間をカウントする符号付2進値を維持することができる。転送に待ち時間が付加されるサイクル毎に、この2進カウントは増分することができ、2進値が正であればスレッドは停止していることを示す。次に、この停止時間を積分器内で累積することができる(積分器値は時間とともに無制限となるため、全積分器から周期的に値を減じる機構を設けることができる)。したがって、積分器により出力される待ち時間値は優先順位付けデータを発生する時に調停制御回路が使用できるスレッド間の停止時間差の情報を提供する。積分器を使用することの代替策として、非リアルタイムプロセスを実行する各処理要素にフィルタ回路を関連付けることができ、フィルタ回路は単位時間当たり待ち時間の形の待ち時間値を作り出す。それ故、このような実施例では、単純なローパスフィルタを使用して累積された停止時間を追跡することができ、各フィルタからの出力は平均ストールレート(stall rate)、すなわち、スレッドが予め定められた時間にわたって停止され基準期間を形成するサイクル数に比例する。
【0022】
一実施例では、全ての非リアルタイムプロセスを同等に処理することができ、進捗データ内に含まれる待ち時間値は待ち時間の影響を非リアルタイムプロセス間で均一に分配することをシークするのに使用される。しかしながら、代替実施例では、少なくとも1つの非リアルタイムプロセスには重み付けが関連付けられており、その重み付けはその非リアルタイムプロセスに対する待ち時間値を作り出す時に考慮される。このような各プロセスに対する重み付けは設計時に固定することができる、またはプログラマブルとすることができるが、典型的にはダイナミックに変動しない。フィルタ回路を採用する実施例では、各非リアルタイムプロセスの重み付けはこのようなフィルタ回路により適用されるフィルタアルゴリズムに異なる重み付けを適用して実現することができる。したがって、ある非リアルタイムプロセスには高い重み付けを適用できるが他の非リアルタイムプロセスには低い重み付けが適用され、調停制御回路により優先順位付けプロセスが実施されている時に、ある非リアルタイムプロセス(すなわち、より高い重み付けのプロセス)が他の非リアルタイムプロセスよりも好まれることがある。例として、これによりオーディオストリームを発生するプロセスは、そのプロセスの停止によりオーディオが非常にまれに混乱することが受け入れられれば、非リアルタイムプロセスと見なすことができ、そのプロセスに関してその時高い重み付けが適用されなければ、そのプロセスに関して出力される待ち時間値は他の重要度の低い非リアルタイムプロセスに較べて比較的迅速に増加し、調停制御回路内で優先順位付けプロセスを実施している時にそのオーディオストリーム・プロセスを優先順位の低い非リアルタイムプロセスよりも先に優先順位付けするようにされる。
【0023】
一実施例では、データ処理装置はさらにリアルタイムプロセスを実行中の各処理要素に関連するカウンタ回路を含み、カウンタ回路は前記スラック値を作り出している。それ故、一実施例では、そのプロセスによりメッセージが発せられる時(たとえば、トランザクションが開始する)カウンタ回路はカウンタを特定の値にセットすることができ、そのカウンタ値は次に時間とともにスラック値が減少するように各クロックサイクルで減分される。スラック値が比較的高い間、調停制御回路により実施される優先順位付けプロセスはある非リアルタイムプロセスをリアルタイムプロセスよりも先に優先順位付けすることができるが、そこで優先順位付けプロセスがリアルタイムプロセスをこのような非リアルタイムプロセスよりも先に優先順位付けするレベルまでスラック値が減少するポイントとなる。
【0024】
一実施例では、非リアルタイムプロセスに対して進捗データはそのプロセスが停止されるか否かを識別するストール値をさらに識別する。特定の一実施例では、これは1ビット値の形をとることができ一方の値はプロセスが停止されることを示し他方の値はそれが停止されないことを示す。特定の一実施例では、このストール値は待ち時間値を作り出すのに使用されるフィルタ回路への入力としても使用することができる。
【0025】
一実施例では、非リアルタイムプロセスに対して進捗データはプロセスが停止する前にそのプロセスにより発せられるメッセージの残りの処理時間を示すスラック値をさらに識別する。それ故、非リアルタイムプロセスが事前にトランザクションを開始する(すなわち、プロセスはそのトランザクションの結果が要求される前にまだある期間継続することができる)状況では、プロセスが停止する前の残り時間を識別する進捗データ内にスラック値を含めることができ、調停制御回路は優先順位付けプロセスを実施する時にこの情報を考慮することができる。
【0026】
優先順位付けプロセスは多様な方法で構成することができる。しかしながら、一実施例では、そのリアルタイムプロセスにより発せられるメッセージの残りの処理時間が予め定められた閾値よりも大きいことをそのリアルタイムプロセスのスラック値が示す場合、優先順位付けプロセスはリアルタイムプロセスよりも非リアルタイムプロセスに優先順位を与える。それ故、リアルタイムプロセス内のスラックが許す場合、非リアルタイムプロセスはリアルタイムプロセスよりも先に優先順位付けされて、リアルタイムプロセスにいかなる実際の影響も及ぼすことなく、これらの非リアルタイムプロセスにより経験される待ち時間を低減することができる。
【0027】
一実施例では、優先順位付けプロセスは低い待ち時間値を有する非リアルタイムプロセスよりも高い待ち時間値を有する非リアルタイムプロセスに優先順位を与える。これらの待ち時間値はプロセスに関連する待ち時間が予め定められた時間を超えることを示すため、それにより非リアルタイムプロセスを横切して待ち時間を公平に配分することができる。
【0028】
一実施例では、異なるストール値を有する2つの非リアルタイムプロセスに対して、優先順位付けプロセスはより高い待ち時間値を有するプロセスに優先順位を与えることよりも優先的にそのプロセスが停止されることをそのストール値が示す非リアルタイムプロセスに優先順位を与える。それ故、このような方法は任意の非リアルタイムプロセスが停止される時間を低減するようにシークする。
【0029】
一実施例では、異なるスラック値を有する2つの非リアルタイムプロセスに対して、優先順位付けプロセスはより高い待ち時間値を有するプロセスに優先順位を与えることよりも優先的に最少スラックを有する非リアルタイムプロセスに優先順位を与える。このような方法は可能な所で非リアルタイムプロセスが停止する尤度を低減するようにシークする。
【0030】
各処理要素により作り出される進捗データの主目的は優先順位付けプロセスを実施する時に調停制御回路がサービス品質要件を考慮できるようにすることであるが、進捗データの若干をデータ処理装置の他の部分で再使用できることも判っている。たとえば、データ処理装置にエネルギ管理回路を設けて装置のさまざまなコンポーネントが動作するパフォーマンスレベルを制御することが知られている。このようなデータ処理装置は典型的に実行時に異なる動作パフォーマンスレベル間で切り替わることができる。低いパフォーマンスレベルは軽いワークロードを実行するときにエネルギ(消費電力)を節減するために選出され、高いパフォーマンスレベルはより処理集約的ワークロードに対して選出される。典型的に、データ処理装置内の処理要素がcomplimentary metal−oxide semiconductor(CMOS)技術でインプリメントされる場合、低いパフォーマンスレベルは低い周波数および動作電圧設定を意味する。
【0031】
データ処理装置がこのようなエネルギ管理回路を含む一実施例では、これらの処理要素に対する動作パフォーマンスレベルを決定する時にエネルギ管理回路は1つ以上の処理要素により発せられる進捗データの少なくとも一部を考慮するようにされる。特定の一実施例では、エネルギ管理回路は非リアルタイムプロセスを実行中の1つ以上の処理要素により出力される待ち時間値を考慮する。
【0032】
第2の側面から見て、本発明は各処理要素が受取要素へ発せられるメッセージを要求するプロセスを実行する複数の処理要素と、複数の処理要素間で共有されそれを介してメッセージが送られる通信チャネルとを有するデータ処理装置の通信チャネルを介して送られるメッセージ間の調停方法を提供し、この方法は各処理要素からその上で実行中のプロセスに対する進捗データを発するステップであって、進捗データはプロセスに対する待ち時間含意を示すステップと、各処理要素からの進捗データに応答して、優先順位付けデータを発生するために進捗データにより示される各プロセスの待ち時間含意を考慮して優先順位付けプロセスを実施するステップと、通信チャネルを介して送られる多数のメッセージ間の調停を行う調停プロセスを実施するステップであって、優先順位付けデータは調停プロセスを制御するのに使用されるステップと、を含んでいる。
【0033】
第3の側面から見て、本発明はデータ処理装置用調停制御回路を提供し、データ処理装置は各々が受取要素へ発せられるメッセージを要求するプロセスを実行する複数の処理要素と、複数の処理要素により共有されそれを介してメッセージが送られる通信チャネルと、通信チャネルを介して送られる多数のメッセージ間の調停を行う調停プロセスを実施する調停回路とを有し、調停回路はその処理要素上で実行中のプロセスに対する進捗データを各処理要素から受信する入力インターフェイスであって、進捗データはプロセスに対する待ち時間含意を含む入力インターフェイスと、各処理要素からの進捗データに応答して優先順位付けデータを発生するために進捗データにより示される各プロセスの待ち時間含意を考慮して優先順位付けプロセスを実施する優先順位付け回路と、調停プロセスを制御するために優先順位付けデータを調停回路に出力する出力インターフェイスと、を含んでいる。
【実施例】
【0034】
(実施例の説明)
単なる例として添付図に例示されている実施例について本発明をさらに説明する。図1は本発明の一実施例に従ったデータ処理装置のブロック図である。この実施例では、データ処理装置は通信チャネル40を介していくつかのスレーブ装置50,60,70に接続されたいくつかのマスター装置10,20,30を含むSoCの形をとる。本発明の実施例を検討する目的に対してこのようなSoC装置が考慮されるが、当業者ならば本発明の実施例の技術は通信チャネルが複数の処理要素間で共有される多種多様な異なるシステムに応用できることが
理解される。
【0035】
図1のSoC例について考えると、通信チャネル40は典型的にSoC内の多数のバスマスター装置10,20,30およびバススレーブ装置50,60,70を相互接続するための接続のマトリクスを提供するいくつかの相互接続されたバスを含む相互接続ブロックの形をとる。
【0036】
通信チャネルを形成するバスは典型的に指定されたバスプロトコルに従って動作し、それ故、たとえばARM社により開発された“Advanced Microcontroller Bus Architecture”(AMBA)に従って動作することができる。
【0037】
したがって、通信チャネル40はさまざまなマスターおよびスレーブ装置間の相互接続の複雑な構成からなることが理解される。通信チャネル内のさまざまなポイントにおいて、特定のパスの使用を奪い合う多数のメッセージ間の調停を行う調停回路を設ける必要がある。
【0038】
各マスタ10,20,30はその間にさまざまなトランザクションが通信チャネル40を介して開始されるプロセスを典型的に実行する。このようなトランザクションによりマスタからスレーブへ(ライトトランザクションの場合)またはスレーブからマスターへ(リードトランザクションの場合)データを送ることができ、各トランザクションは通信チャネル上へアクセス要求を発するマスター装置により開始される。各アクセス要求はメッセージを形成すると考えられ、通信チャネル内の調停回路は多数のメッセージが特定のパスの使用を奪い合うバスインフラストラクチュア内の任意のポイントで調停を実施する必要がある。
【0039】
したがって、調停回路は通信チャネル全体にわたって分散された複数の調停要素からなるものと考えられ、このような各調停要素が多数のメッセージ間の調停を行う調停プロセスを実施する。本発明の実施例に従って、各調停要素により実施される調停プロセスは、それぞれ、対応するパス12,22,32を介して各マスター装置10,20,30により出力される進捗情報を入力インターフェイス82において受信するようにされた調停制御回路80により決定される。後述するように、この進捗データは各マスター装置上で実行中のプロセスに対する待ち時間含意を示し、その進捗データは調停制御回路内の優先順位付け回路84へ転送され、そこで優先順位付けデータを発生するためにその進捗データを考慮して優先順位付けプロセスが実施される。その優先順位付けデータは、次に、プロセスの優先順位付けされたリストとして出力インターフェイス86を介して出力され、そのリストは通信チャネル内の全調停要素(ここでは、アービター(arbiters)とも呼ばれる)へ送られる。この優先順位付けされたリストを広めることができる多様な方法がある。一実施例では、それはメッセージを送るのに使用されるのと同じパスを介して広めることができ、代替実施例では、この優先順位付けされたリストは独立した専用バス構造により広めることができる。次に、各アービターは提供された優先順位リストに基づいてその調停プロセスを実施する。
【0040】
調停制御回路80はこの優先順位付けされたリストを予め定められた間隔で更新するように構成することができる。一般的に言えば、優先順位付けされたリストは調停制御回路への任意の入力が変化する時は常に更新しなければならない。典型的に、進行中のトランザクションがあまり無いか全く無い場合を除き、これによりリストは各クロックサイクルで更新される。
【0041】
図2Aはマルチコアプロセッサ100を図1のデータ処理装置内に収容することができる1つの方法を例示するブロック図である。マルチコアプロセッサ100はプロセッサ100内の内部通信チャネル150を介して相互接続される複数のプロセッサコア110,120,130,140を有する。次に、マルチコアプロセッサ100はそれを介してさまざまなスレーブ装置50,60,70と通信することができる外部通信チャネル160に接続される。一実施例では、図1の通信チャネル40はマルチコアプロセッサ100の内部通信チャネル150とマルチコアプロセッサ外部の通信チャネル160の両方を包含するものと見なすことができ、実質的に各プロセッサコア110,120,130,140は各々がそれら自体の進捗情報を調停制御回路80へ発する独立したマスター装置を形成すると見なすことができる。一実施例では、このような各プロセッサコア110,120,130,140が独立したプログラム・スレッドを実行し、したがって、任意特定のコアから出力される進捗情報は関連するスレッドに対する待ち時間含意を示す。
【0042】
図2Bに例示するように、代替実施例では、マルチコアプロセッサの内部は調停制御回路から隠すことができ、替わりにマルチコアプロセッサの全体が単一マスター装置、この例ではマスター装置10、として見られる。したがって、マスター装置10がマルチコアプロセッサである状況においてパス12を介して調停制御回路へ出力される進捗情報は全体としてマルチコアプロセッサにより実施される「プロセス」に対する待ち時間含意を提供し、それ故、各個別コア110,120,130,140により実行される各個別スレッドに対する待ち時間含意を直接提供することはない。
【0043】
図3Aはさまざまなタイプの非リアルタイムプロセスに対する時間対待ち時間コストを例示する図である。線「a」200は必要な時にデータを要求するプロセスを処理要素が実行する時に生じる待ち時間コストの形を示すが、通信チャネル40を介して任意のアクセス要求が発せられる前に内部遅延が生じる。これは、たとえば、マスター装置が内部キャッシュ、ブラックボックスシステム、等を有するプロセッサであるケースである。キャッシュを有するプロセッサの例を考えると、プロセッサによりアクセス要求が発せられると、最初にキャッシュ内でルックアップが実施されてアクセス要求の対象であるデータがキャッシュ内にあるかどうか決定される。無ければ、キャッシュミスが生じ、通信チャネル40上にアクセス要求が生じる。線200に関連して図3Aに点線で示すように、非リアルタイムプロセスにより観察される待ち時間は通信チャネル40上に任意のアクセス要求が現われる前に既に増加しており、時間ゼロにおいて通信チャネル上にアクセス要求が現われると、待ち時間コストは既に正値であるようにされる。
【0044】
対照的に、線「b」210はそのプロセスが必要な時にデータを要求する処理要素に対して観察されるタイプの線を示し、要求は即座に通信チャネル40上に現れる。このような処理要素の例は、たとえば、Direct Memory Access(DMA)コントローラである。
【0045】
線「c」220はそのプロセスが事前にデータを要求する処理要素に対して観察されるタイプの線を示す。それ故、この例では、要求は時間ゼロにおいて通信チャネル40上に現われるが、プロセスは他の有用な作業をできるため、時間tに達するまで正の待ち時間コストは無い。したがって、プロセスが実際に停止するのはやっと時間tにおいてである。対照的に、線210に関連するプロセスに対して、そのプロセスは時間ゼロで停止し、線200に関連するプロセスに対しては、時間ゼロにおいて通信チャネル40上に要求が現われる前であってもプロセスは停止する。
【0046】
したがって、線200および210に関連するプロセスにはスラック時間は無いことが判るが、線220に関連するプロセスはそのプロセスにより通信チャネル40上に発せられるメッセージをそのプロセスを停止させずに処理できるいくらかのスラック時間を有する。
【0047】
本発明の一実施例では、非リアルタイムプロセスを実行する任意のマスター装置により発せられる進捗情報の一部はプロセスが停止される時にセットされプロセスが停止されない時にリセットされるストールビット(stall bit)である。図3Bは図3Aの3本の線の例に対するこのストールビットのプロファイルを示す。この例では、セット状態は論理1値で示されリセット状態は論理0値で示されるものと仮定する。図3Bからお判りのように、線aに関連するプロセスはポイント205において停止し、したがって、ストールビットはそのポイントにセットされる。同様に、線bに関連するプロセスはポイント215において停止しまた線cに関連するプロセスはポイント225において停止し、したがって、ストールビットはポイント215,225において、それぞれ、遷移する。
【0048】
線aに関連するプロセスについて考えると、要求は通信チャネル40上に発せられる必要なしに処理要素内でサービスされる。たとえば、前記したキャッシュを有するプロセッサの例について考えると、キャッシュヒットが生じると、通信チャネル40を介してアクセス要求を伝搬させる必要なしにキャッシュに関してアクセスが進行する。したがって、点線207で示すように、このような状況においてストールビットは205において論理1値に遷移するが、アクセス要求がサービスされていると、次に、論理0値へ遷移し戻る。一実施例では、任意特定のアクセス要求が通信チャネル40上に発せられているかどうかに拘わらず、ストールビットはまだ進捗情報の一部として出力され、実際に、一実施例ではそのプロセスに対する待ち時間情報を発生するのに使用されるフィルタへの入力として使用される。それ故、調停制御回路80にはその停止の原因に無関係に任意特定のマスター装置のプロセスが停止される時間の割合に関する情報が提供され、特に、通信チャネル40を介して導入される待ち時間の結果として停止が生じる状況に限定はされない。
【0049】
図4はリアルタイムプロセスの待ち時間コストを例示する図3Aと同様な図である。前記したように、本出願の目的のために、リアルタイムプロセスはプロセスのいくらかの停止は受け入れられる非リアルタイムプロセスとは対照的に、そのプロセスが停止することは受け入れられないプロセスである。したがって、停止することが許されないとすると、リアルタイムプロセスは典型的に事前にデータを要求し、曲線がパス250に従っている間、そのリアルタイムプロセスに関連するスラック時間がある。しかしながら、この場合、スラック時間はそのリアルタイムプロセスにより発せられたメッセージを処理するための残り時間を示し、スラック時間が尽きると垂直線260で示すように待ち時間コストは無限大となる。
【0050】
図5は本発明の一実施例に従ったマスター装置10,20,30により発せられる進捗情報のさまざまなコンポーネントを例示している。特に、図5の例では、マスター10は非リアルタイムスレッドを実行しており、マスター20は非リアルタイムスレッドを実行しているが、マスター30はリアルタイムスレッドを実行しているものと仮定する。一実施例では、非リアルタイムスレッドを実行している各マスター装置は進捗情報に対して4つのコンポーネントを出し入れするようにされている。特に、プロセスは非リアルタイムスレッドであることを識別するリアルタイムビット信号がパス200,220を介して発せられる。本例では、これはリアルタイムビットをゼロにセットして例示されている。さらに、非リアルタイムスレッドに関連する任意のスラック時間を識別するスラック値がパス205,225を介して出力される。図3Aの待ち時間コストグラフに関して、このスラック値は任意の負の待ち時間コスト値で表せることが理解される。特に、線c220について考えると、負の待ち時間コストの大きさは時間ゼロの特定の値で始り、時間tにおいてゼロの値に達するように、そのプロセスに関連するスラック時間中にゼロまで漸減する。
【0051】
さらに、図5に示す実施例では、現在の時間において関連するプロセスが停止されるか否かを識別するストールビットがパス210,230を介して出力される。このストールビットはローパスフィルタ215,235にも入力されて待ち時間値を発生しパス220,240を介して出力させ、この待ち時間値は単位時間当たり遅延を表す。一実施例では、各ローパスフィルタ215,235は累積されたストール時間を追跡する単純な単極ローパスフィルタである。特に、一実施例では、ローパスフィルタは待ち時間値yを発生するために下記の等式をインプリメントすることができ、
=α.yk−1+x(1−α)
ここに、yは待ち時間値であり、αは選出された定数であり、kは時点でありxはストールビット値である。
【0052】
したがって、待ち時間値yは平均ストールレート、すなわち基準期間にわたってスレッドが停止されるサイクル数、に比例し基準期間は定数αの選択によって決まる。
【0053】
リアルタイムスレッドに対して、進行情報はやはりパス250を介して出力されるリアルタイムビットを含み、ここではリアルタイムビットはスレッドがリアルタイムスレッドであることを示す論理1値にセットされ、さらに、カウンタ255からパス260を介して出力されるスラック値を含んでいる。特に、リアルタイムスレッドがアクセス要求を出力する場合、カウンタ255はそのアクセス要求に応答するクロックサイクル数を表すある予め定められた値にセットされ、各クロックサイクルが経過するとカウンタは減分されてスラック値を時間とともに減少させる。
【0054】
図5に例示されたさまざまな進捗情報に基づいて、一実施例の調停制御回路80は次に、図6に示すように、各スレッドに対するデータ構造のテーブル300を維持する。フィールド305に入ったスレッドIDにより示される各スレッドに対して、リアルタイムビット、ストールビット、フィルタ出力の値およびスラック値が、それぞれ、フィールド310,315,320,325内に格納される。特定のスレッドに対して情報のサブセットしか提供されなければ、1つ以上のフィールドはブランクのままとされる。たとえば、リアルタイムスレッドについて考えると、ストールビットやフィルタ出力はない。
【0055】
次に、調停制御回路80は優先順位付け回路84を利用して各スレッドに関連するデータ構造を考慮したプロセス(スレッド)の優先順位付けされたリストを発生する。当業者ならば、一連のデータ構造が提示される時に順序付けされたリストを形成するためのいくつかの既知の技術があり、しばしばこれらのプロセスはデータ構造の選出された対に対する比較プロセスの反復実施を伴うことが理解される。1つのこのような機構は既知の「バブルソート(bubble sort)」機構であり、それはソートされるリスト中を反復ステッピングし、一時に2つのデータ構造を比較し誤った順序であればそれらをスワッピングすることで働く。リストをパススルーすることはスワップが必要とされなくなるまで繰り返され、それはリストがソートされることを意味する。
【0056】
図7はどのスレッドが他よりも優先順位を有するか判断するためにスレッドの選出された対(ここではスレッドXおよびYと表示されている)がどのように比較されるかを略示している。図7に示すように、両方のスレッドに対してリアルタイムビットがセットされると(すなわち、両方のスレッドがリアルタイムスレッド)、最少スラックのスレッドに優先順位が与えられる、すなわち最も早いデッドラインを有するスレッドに優先順位が与えられ、このような優先順位付け技術はしばしば“earliest deadline first”優先順位付けと呼ばれる。しかしながら、スレッドXが非リアルタイムスレッドでありスレッドYがリアルタイムスレッドであれば、図7の右上隅に示すようにスレッドYに対するスラック時間が予め定められた値Nよりも大きければ優先順位はスレッドXに与えられる。したがって、優先順位は自動的にリアルタイムスレッドには与えられず、リアルタイムスレッドに対するスラック時間が比較的大きければ、その非リアルタイムスレッドの待ち時間の低減をシークするために優先順位は非リアルタイムスレッドに与えられる。スラック時間が切れる前にリアルタイムスレッドがサービスされると悪い結果は生じないため、これはリアルタイムスレッドに悪影響を及ぼさない。
【0057】
同様に、スレッドYが非リアルタイムスレッドでありスレッドXがリアルタイムスレッドであれば、図7の左下側に示すように、スレッドXに対するスラック時間が予め定められた値Nよりも大きければ優先順位はスレッドYに与えられる。
【0058】
両方のスレッドが非リアルタイムスレッドであれば、判断ステップは図7の右下側に示すものとなる。特に、両方のリアルタイムスレッドに対するストールビットが最初に考慮される。両方のスレッドに対するストールビットがゼロであれば、いずれのスレッドも停止されないことを意味し、優先順位は最少スラックのスレッド、すなわち最も迅速に停止するスレッド、に与えられる。一方のスレッドのストールビットがセットされ他方はセットされなければ、優先順位はストールビットがセットされているスレッドに与えられる、すなわち優先順位は既に停止しているスレッドに与えられる。最後に、両方のスレッドのストールビットがセットされておれば、優先順位はフィルタ出力の最も高いスレッド、すなわち、基準期間にわたりより高い平均ストールレートを有するスレッドに与えられる。
【0059】
ある実施例では、図5について前記した進捗情報の全アイテムを提示する必要はない。たとえば、ある実施例では非リアルタイムスレッドに対してスラック値は手に入らないことがある。その場合、2つの非リアルタイムスレッドが考慮されていて両方の非リアルタイムスレッドがそれらのストールビットをゼロに等しくセットしておれば、優先順位はフィルタ出力の最も高いスレッドに与えられる、すなわち両方のスレッドがそれらのストールビットを1に等しくセットしている場合に適用されるのと同じ優先順位付けが適用される。
【0060】
一実施例において、あるスレッドがストールビットを提供しなければ、そのストールビットはセットされる、すなわち論理1値を有するものと仮定される。
【0061】
図8は優先順位付けされたリストを作り出すために一実施例に従って図8の調停制御回路80により実施される一般的プロセスを例示している。ステップ400において、スレッドの初期順序付けが準備される。最初の反復において、これは任意順序付けとすることができるが、後続反復に対しては初期順序付けはプロセスにより作り出された前の順序付けとなることがある。その後、プロセスはステップ405に進み、そこで一対のスレッドが選出され、その後ステップ410において図9についてより詳細に説明するように順序付けプロセスが適用される。この順序付けプロセスは図7について略示した優先順位付け方式をインプリメントする。
【0062】
その後、ステップ415において、スレッドの順序付けは順序付けプロセスの結果に応じて修正され、その後ステップ420において順序付けプロセスを適用すべきスレッド対がまだあるのか決定される。プロセスを介した最初の反復では、典型的にスレッド対の組合せ毎に順序付けプロセスを行う必要がある。しかしながら、後続反復では、進捗情報の何の特徴が変更されているか、またどのスレッドの進捗情報が変更されているかに応じて、可能な全スレッド対のサブセットに順序付けプロセスを適用するだけでよい。ステップ420において順序付けプロセスを適用する必要のある少なくとももう1対のスレッドがあると判断されると、プロセスはステップ405へ戻り、順序付けプロセスを行うべき対はもう無いと判断されると、プロセスはステップ425へ進み、そこでスレッドの修正された順序付けが優先順位付けされたリストとして通信チャネル40内の全アービターに出力される。
【0063】
例示する目的でステップ405,410,415および420が順次示されているが、順序付けプロセスを行う必要がある全ての対が識別されるように、これらのステップは実際上並列に処理することができ、次に、スレッドの修正された順序付けを作り出すために順序付けプロセスは並列に適用されることに留意しなければならない。
【0064】
図9は本発明の一実施例に従って図8のステップ410において実施されるステップを示すフロー図である。ステップ500において、両方のスレッドがリアルタイムスレッドであるかどうか決定され、そうであればステップ505においてスレッドはearliest deadline first原理に従って優先順位付けされる。
【0065】
ステップ500において両方のスレッドがリアルタイムでないと決定されると、ステップ510において一方のスレッドがリアルタイムスレッドであるかどうか決定され、そうであればプロセスはステップ515へ進みそこでリアルタイムスレッドのスラックが予め定められた値Nよりも大きければ非リアルタイムスレッドに優先順位が与えられる。そうでなければ、リアルタイムスレッドが優先順位付けされる。
【0066】
ステップ510においていずれのスレッドもリアルタイムスレッドではないと決定されると、プロセスはステップ520へ進みそこで両方のスレッドのストールビットがゼロに等しいかどうか、すなわち両方のスレッドにまだいくらかのスラックが残っているかどうか決定される。両方のスレッドがまだいくらかのスラックを有すると仮定すると、プロセスはステップ525へ進みそこでスラック値が手に入るかどうか決定され、手に入ればプロセスはステップ530へ進みそこでスレッドはearliest deadline first原理に従って優先順位付けされる、すなわち最少スラックのスレッドに優先順位が与えられる。しかしながら、ステップ525においてスラック値が手に入らないと決定されると、プロセスは535に進み、フィルタ出力の最も高いスレッドに優先順位が与えられる。
【0067】
ステップ520において両方のスレッドのストールビットがゼロに等しくないと決定されると、ステップ540において一方のスレッドに対するストールビットがゼロに等しいかどうか、すなわち一方のスレッドがスラックを有するかどうか決定される。そうであれば、プロセスはステップ545へ進みそこでスラックの無いスレッド(すなわち、そのストールビットが1に等しいスレッド)に優先順位が与えられる。
【0068】
ステップ540においていずれのストールビットもゼロにセットされない、すなわち、両方のスレッドがストールされると決定されると、プロセスはステップ550へ進みそこでフィルタ出力の最も高いスレッドに優先順位が与えられる。
【0069】
図9の前記説明から、図9のプロセスは図7に略示された選出基準をインプリメントすることが判る。
【0070】
一実施例では、異なる重み付けをこれらのスレッドのせいにしてある非リアルタイムスレッドを他の非リアルタイムスレッドよりも優先的に処理することができる。実際上、これらの重み付けは非リアルタイムスレッドを実行中の各処理要素に提供される関連するローパスフィルタ215,235により適用することができる。その結果、より高い重み付けを有するプロセスに対して、ストールビットがセットされる度に、関連するローパスフィルタからの出力待ち時間値はより低く重み付けされたプロセスに対する場合よりも大量に増加される。したがって、図7について略示された選出基準を適用する時に、フィルタ出力の最も高いスレッドに優先順位を与えるべきであると決定され、次に、全てが等しいため、より高い重み付けのスレッドはより高いフィルタ出力を有しより低い重み付けのスレッドよりも先に優先順位付けされる。それ故、フィルタからの出力を重み付けすることにより、さまざまな非リアルタイムスレッドの優先順位を処理するためのさらなる柔軟性が提供される。
【0071】
本発明の実施例の前記した技術はマスター装置上で実行中のさまざまなスレッドに適用される最大待ち時間の低減をシークすることが理解される。これにより各プロセスが有用な作業を行うことができる有用なクロックサイクル数が比例して増加する。その結果実際に必要なものよりも良い性能が提供されると、マスター装置またはこれらのマスター装置により共有される通信チャネルの動作パフォーマンスレベルを低減することによりトータル待ち時間を増加する機会ができる。
【0072】
特に、いくつかの最新システムはシステム内のあるコンポーネントのパフォーマンスレベルを、典型的にはこれらのコンポーネントの周波数および/または動作電圧を変えることにより、変えることができるエネルギ管理技術を提供する。典型的に、このようなパフォーマンスレベル設定はシステム内のエネルギ管理コントローラにより実施される。
【0073】
前記した観察が与えられると、本発明の一実施例において、さまざまなマスター装置により出力される進捗データのある側面もこのようなエネルギ管理コントローラへの入力として送られる。図10はこのような実施例を略示しており、図からお判りのように、パス12,22,32を介して出力される進捗データのいくらかもエネルギ管理コントローラ600への入力として、それぞれ、パス602,604,606を介して送ることができる。特定の一実施例では、任意の非リアルタイムスレッドにより出力される待ち時間値がエネルギ管理コントローラ600へ送られる。この情報はさまざまな方法で使用することができる。
【0074】
たとえば、特定のマスター装置の動作周波数が数千サイクル/ミリ秒であり、100ストールサイクル/ミリ秒であることを待ち時間値が示す場合、これはマスター装置が900有用サイクル/ミリ秒を有することを意味する。実際上、そのプロセスを満足に実行するのにマスター装置が600有用サイクル/ミリ秒しか必要としなければ、そのマスター装置が必要とする600有用サイクル/ミリ秒を提供しながらエネルギを節減するためにそのマスター装置に供給される周波数および/または動作電圧を低減することができる。パフォーマンスレベルを変えることができる粒度に応じて、このプロセスを各マスター装置に対して順次独立して実施することができる。
【0075】
替わりに、または、さらに、通信チャネル40のパフォーマンスレベルをエネルギ管理コントローラにより変えることができれば、エネルギ管理コントローラ600はさまざまなマスター装置から受信した最高待ち時間値を選出し、その最高値に関係する通信チャネルのパフォーマンスレベルを調節することができる。それにより、さまざまなマスター装置上で実行中のプロセスが満足に動作し続けることを保証しながら、通信チャネルの動作周波数を低減することができる。本質的に、エネルギ管理コントローラはシステムおよびその上で実行していアプリケーションに受け入れられる基準スレッドストールレートを目指して通信チャネルのクロック速度を調節することができる。
【0076】
本発明の前記した実施例によりQoSを決定してスレッド間に自動的に割り当てることができ、要求条件を前もって知る必要がなくなり、QoSはスレッド間の通信における変化にダイナミックに適応する。
【0077】
本発明の実施例のQoS方式は通信チャネルインプリメンテーションに対する基準パフォーマンスレベルを提供するのに使用することもできる。特に、メモリコントローラ等のコンポーネントのアーキテクチュア内で比較を行うことができ、パイプライニングステージを付加してこのタイプの調停方式を実現するコストをメモリコントローラにアクセスする全スレッドに待ち時間のサイクルを付加するコストに対して比較することができる。
【0078】
特定の実施例について説明してきたが、本発明はそれに限定されるものではなく発明の範囲内でそれに多くの修正および追加を行うことができる。たとえば、本発明の範囲を逸脱することなく従属項の特徴を独立項の特徴とさまざまに組み合わせることができる。
【図面の簡単な説明】
【0079】
【図1】本発明の一実施例に従ったデータ処理装置のブロック図である。
【図2A】図1のデータ処理装置内にマルチコアプロセッサを収容する1つの方法を例示するブロック図である。
【図2B】図1のデータ処理装置内にマルチコアプロセッサを収容する代替方法を例示するブロック図である。
【図3A】異なるタイプの非リアルタイムプロセスに対する時間対待ち時間コストを例示する略図である。
【図3B】図3Aに例示された異なるプロセスに対して本発明の一実施例に従って発せられるストールビットの値を例示する図である。
【図4】リアルタイムプロセスに対する時間対待ち時間コストを例示する略図である。
【図5】本発明の一実施例に従って図1の調停制御回路へ各マスター装置により発せられる進捗情報のさまざまなコンポーネントを例示する図である。
【図6】本発明の一実施例に従って図1の調停制御回路内に維持できるデータ構造を例示する図である。
【図7】本発明の一実施例に従って2つのスレッドに関して図1の調停制御回路により適用される順位付けプロセスを例示する略図である。
【図8】本発明の一実施例に従って図1の調停制御回路により適用される優先順位付けプロセスを例示するフロー図である。
【図9】本発明の一実施例に従って選出された一対のスレッドに順位付けプロセスを適用するために実施されるステップをより詳細に例示するフロー図である。
【図10】本発明の一実施例に従って図1のさまざまなマスター装置により発せられる進捗データの少なくとも一部をどのようにしてデータ処理装置内のエネルギ管理制御回路にも送ることができるかを例示するブロック図である。
【符号の説明】
【0080】
10,20,30 マスター装置
12,22,32,200,205,210,220,225,230,250,260,602,604,606 パス
40,160 通信チャネル
50,60,70 スレーブ装置
80 調停制御回路
82 入力インターフェイス
84 優先順位付け回路
86 出力インターフェイス
100 外部通信チャネル
110,120,130,140 プロセッサコア
150 内部通信チャネル
215,235 フィルタ
255 カウンタ
600 エネルギ管理コントローラ

【特許請求の範囲】
【請求項1】
通信チャネルを介して送られるメッセージ間の調停を行うデータ処理装置であって、
各々が受取要素へ発せられるメッセージを要求するプロセスを実行する複数の処理要素と、
複数の処理要素間で共有され、それを介してメッセージが送られる通信チャネルと、
通信チャネルを介して送られる多数のメッセージ間の調停を行う調停プロセスを実施する調停回路と、を含み、
各処理要素はその上で実行中のプロセスに対する進捗データを発するようにされており、進捗データはプロセスに対する待ち時間含意を示し、さらに、
各処理要素からの進捗データに応答して、優先順位付けデータを発生するために進捗データにより示される各プロセスの待ち時間含意を考慮して優先順位付けプロセスを実施し、かつ調停プロセスを制御するために優先順位付けデータを調停回路に出力する調停制御回路と、
を含むデータ処理装置。
【請求項2】
請求項1に記載のデータ処理装置であって、各処理要素は通信チャネルに接続されたマスター装置であるデータ処理装置。
【請求項3】
請求項2に記載のデータ処理装置であって、各メッセージは前記マスター装置の1つにより発せられるアクセス要求であるデータ処理装置。
【請求項4】
請求項1に記載のデータ処理装置であって、各プロセスはプログラム・スレッドであり、各処理要素は単一プログラム・スレッドを実行するデータ処理装置。
【請求項5】
請求項1に記載のデータ処理装置であって、少なくとも1つの処理要素は多数の処理装置を含み、各処理装置がプログラム・スレッドを実行するデータ処理装置。
【請求項6】
請求項1に記載のデータ処理装置であって、データ処理装置はシステム・オン・チップであるデータ処理装置。
【請求項7】
請求項1に記載のデータ処理装置であって、進捗データは関連するプロセスがリアルタイムプロセスであるか非リアルタイムプロセスであるかを識別し、リアルタイムプロセスに対して、進捗データは少なくともそのリアルタイムプロセスにより発せられるメッセージの残りの処理時間を示すスラック値をさらに識別し、非リアルタイムプロセスに対して、進捗データは少なくとも予め定められた時間にわたりそのプロセスに関連する待ち時間を示す待ち時間値をさらに識別するデータ処理装置。
【請求項8】
請求項7に記載のデータ処理装置であって、さらに、非リアルタイムプロセスを実行する各処理要素に関連するフィルタ回路を含み、フィルタ回路は単位時間当たり待ち時間の形の前記待ち時間値を作り出すデータ処理装置。
【請求項9】
請求項7に記載のデータ処理装置であって、少なくとも1つの非リアルタイムプロセスはそれに関連する重み付けを有し、その重み付けはその非リアルタイムプロセスに対する待ち時間値を作り出す時に考慮されるデータ処理装置。
【請求項10】
請求項7に記載のデータ処理装置であって、さらに、リアルタイムプロセスを実行する各処理要素に関連するカウンタ回路を含み、カウンタ回路は前記スラック値を作り出すデータ処理装置。
【請求項11】
請求項7に記載のデータ処理装置であって、非リアルタイムプロセスに対して、進捗データはそのプロセスが停止しているか否かを識別するストール値をさらに識別するデータ処理装置。
【請求項12】
請求項7に記載のデータ処理装置であって、非リアルタイムプロセスに対して、進捗データはプロセスが停止する前にそのプロセスにより発せられるメッセージを処理する残り時間を示すスラック値をさらに識別するデータ処理装置。
【請求項13】
請求項7に記載のデータ処理装置であって、そのリアルタイムプロセスにより発せられるメッセージを処理する残り時間が予め定められた閾値よりも大きいことをそのリアルタイムプロセスのスラック値が示す場合に、優先順位付けプロセスはリアルタイムプロセスよりも非リアルタイムプロセスに優先順位を与えるデータ処理装置。
【請求項14】
請求項7に記載のデータ処理装置であって、優先順位付けプロセスは待ち時間値の低い非リアルタイムプロセスよりも待ち時間値の高い非リアルタイムプロセスに優先順位を与えるデータ処理装置。
【請求項15】
請求項14に記載のデータ処理装置であって、非リアルタイムプロセスに対して進捗データはそのプロセスが停止しているか否かを識別するストール値をさらに識別し、異なるストール値を有する2つのリアルタイムプロセスに対して、優先順位付けプロセスはプロセスが停止していることをそのストール値が示す非リアルタイムプロセスに待ち時間値のより高いプロセスよりも優先的に優先順位を与えるデータ処理装置。
【請求項16】
請求項14に記載のデータ処理装置であって、非リアルタイムプロセスに対して進捗データはプロセスが停止する前にそのプロセスにより発せられるメッセージを処理する残り時間を示すスラック値をさらに識別し、異なるストール値を有する2つのリアルタイムプロセスに対して、優先順位付けプロセスは最少スラックを有する非リアルタイムプロセスに待ち時間値のより高いプロセスよりも優先的に優先順位を与えるデータ処理装置。
【請求項17】
請求項1に記載のデータ処理装置であって、さらに、
前記複数の処理要素の中の1つ以上の処理要素の動作パフォーマンスレベルを制御するエネルギ管理回路を含み、エネルギ管理回路は動作パフォーマンスレベルを決定する時にこれら1つ以上の処理要素により発せられる進捗データの少なくとも一部を考慮して動作するデータ処理装置。
【請求項18】
請求項17に記載のデータ処理装置であって、進捗データは関連するプロセスがリアルタイムプロセスであるか非リアルタイムプロセスであるかを識別し、リアルタイムプロセスに対して、進捗データは少なくともそのリアルタイムプロセスにより発せられるメッセージの残りの処理時間を示すスラック値をさらに識別し、非リアルタイムプロセスに対して、進捗データは少なくとも予め定められた時間にわたりそのプロセスに関連する待ち時間を示す待ち時間値をさらに識別し、前記進捗データの少なくとも一部は非リアルタイムプロセスを実行する1つ以上の処理要素により出力される待ち時間値を含むデータ処理装置。
【請求項19】
各々が受取要素へ発せられるメッセージを要求するプロセスを実行する複数の処理要素を有するデータ処理装置の通信チャネルを介して送られるメッセージ間の調停方法であって、通信チャネルはそれを介してメッセージが送られる複数の処理要素間で共有され、前記調停方法は、
その処理要素上で実行中のプロセスに対して各処理要素から進捗データを発するステップであって、進捗データはプロセスに対する待ち時間含意を示すステップと、
各処理要素からの進捗データに応答して、優先順位付けデータを発生するために進捗データにより示される各プロセスの待ち時間含意を考慮して優先順位付けプロセスを実施するステップと、
通信チャネルを介して送られる多数のメッセージ間の調停を行う調停プロセスを実施するステップであって、調停プロセスを制御するために優先順位付けデータが使用されるステップと、
を含む方法。
【請求項20】
データ処理装置用調停制御回路であって、データ処理装置は各々が受取要素へ発せられるメッセージを要求するプロセスを実行する複数の処理要素と、複数の処理要素間で共有され、それを介してメッセージが送られる通信チャネルと、通信チャネルを介して送られる多数のメッセージ間の調停を行う調停プロセスを実施する調停回路とを含み、調停制御回路は、
その処理要素上で実行中のプロセスに対する進捗データを各処理要素から受信する入力インターフェイスであって、進捗データはプロセスに対する待ち時間含意を示す入力インターフェイスと、
各処理要素からの進捗データに応答して、優先順位付けデータを発生するために進捗データにより示される各プロセスの待ち時間含意を考慮して優先順位付けプロセスを実施する優先順位付け回路と、
調停プロセスを制御するために優先順位付けデータを調停回路に出力する出力インターフェイスと、
を含む調停制御回路。

【図1】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図3A】
image rotate

【図3B】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2008−234659(P2008−234659A)
【公開日】平成20年10月2日(2008.10.2)
【国際特許分類】
【出願番号】特願2008−73156(P2008−73156)
【出願日】平成20年3月21日(2008.3.21)
【出願人】(594154428)エイアールエム リミテッド (85)
【Fターム(参考)】