次に、本発明の実施形態について図面を参照して詳細に説明する。
[第1の実施の形態]
図1は、本発明の第1の実施形態の構成を示すブロック図である。
図1を参照すると、本実施形態に係る送信権調停装置10は、リクエスト送信制御部100とリクエスト選出部200とを含む。
図2は、本実施形態に係る送信権調停装置10を含むシステムの構成を示すブロック図である。
図2を参照すると、そのシステムは、マスターユニット410と複数のスレーブユニット420とバスインタフェース400とから構成されている。マスターユニット410は、複数のリクエスト発行部(リクエスト発行元とも呼ばれる)411、送信権調停装置10及びバスインタフェース制御部412を含む。スレーブユニット(リクエスト送信先とも呼ばれる)420は、バスインタフェース制御部422及びリクエスト実行部421を含む。マスターユニット410及び各スレーブユニット420とは、互いに、バスインタフェース400で接続されている。尚、スレーブユニット420は、任意の台数であってよい。
リクエスト送信制御部100は、例えばリクエスト発行部411から、リクエストを受信し、受信したリクエストを選出リクエスト情報(後述)に基づいて順次送信する。リクエスト送信制御部100は、例えば、複数の送信待ち状態のリクエストの内、選出リクエスト情報で特定されるリクエストを送信する。また、リクエスト送信制御部100は、送信待ち状態のリクエストが1つである場合、選出リクエスト情報に基づくことなく、そのリクエストを送信するようにしてもよい。リクエスト送信制御部100は、例えば、バスインタフェース制御部412を介してバスインタフェース400を経由し、スレーブユニット420へリクエストを送信する。
リクエスト選出部200は、リクエストを識別するリクエスト情報に基づいて、リクエスト毎のリクエスト発行部411におけるリトライ処理時間を計時する。尚、リクエスト発行部411があるリクエストを最初に送信する場合のリクエスト情報と、そのリクエストをリトライで送信する場合のリクエスト情報とは同じ内容である。即ち、リクエスト選出部200は、同じリクエスト情報で特定されるリクエストの発行間隔(即ち、リトライ処理時間)を計時する。
また、リクエスト選出部200は、送信待ち状態のリクエストの内、リトライ処理時間の計時値が最大であるリクエストを特定する選出リクエスト情報を生成し、リクエスト送信制御部100に出力する。
具体的には、リクエスト選出部200は、リクエスト発行部411が送信したリクエストであって未だスレーブユニット420に送信されていないリクエストの、リトライ処理時間の計時値を比較する。次に、リクエスト選出部200は、それらのリトライ処理時間の計時値が最大であるリクエストを特定する、選出リクエスト情報を生成する。
尚、リクエスト選出部200は、例えばリクエスト送信制御部100から、リクエスト情報を受け取る。この場合、リクエスト送信制御部100は、受信したリクエストに基づいてリクエスト情報を生成してもよい。
また、リクエスト選出部200は、例えばリクエスト発行部411が生成した、リクエスト情報を受信するようにしてもよい。この場合、リクエスト発行部411は、リクエストを送信する際に、そのリクエストに対応するリクエスト情報を送信するようにしてもよい。
リクエスト情報は、例えば、リクエスト発行部411の識別子とシリアル番号とから構成される。また、リクエスト情報は、リクエストを識別可能であれば、任意の情報であってよい。
尚、図1に示す構成要素は、ハードウェア単位の構成ではなく、機能単位の構成を示している。
次に、送信権調停装置10のハードウェア単位の構成要素について説明する。
図3は、本実施形態における送信権調停装置10とその周辺装置のハードウェア構成を示す図である。図3に示されるように、送信権調停装置10は、CPU(Central
Processing Unit)1070、記憶部1071、記憶装置1072及び通信部1075を含む。
CPU1070は、オペレーティングシステム(不図示)を動作させて、本実施形態に係る送信権調停装置10の全体の動作を制御する。また、CPU1070は、例えば記憶装置1072に装着された不揮発性の記録媒体(不図示)から、記憶部1071にプログラムやデータを読み込む。そして、CPU1070は、読み込んだプログラムに従って、また読み込んだデータに基づいて、図1に示すリクエスト送信制御部100及びリクエスト選出部200として各種の処理を実行する。
尚、CPU1070は、通信網(不図示)に接続されている外部コンピュータ(不図示)から、記憶部1071にプログラムやデータをダウンロードするようにしてもよい。
記憶部1071は、プログラムやデータを記憶する。
記憶装置1072は、例えば、光ディスク、フレキシブルディスク、磁気光ディスク、外付けハードディスク及び半導体メモリであって、不揮発性の記憶媒体を含む。記憶装置1072は、プログラムをコンピュータ読み取り可能に記録する。また、記憶装置1072は、データをコンピュータ読み取り可能に記録してもよい。
通信部1075は、リクエスト送信制御部100及びリクエスト選出部200の一部として含まれる。
以上が、送信権調停装置10のハードウェア単位の各構成要素についての説明である。
以上説明したように、図1に示す機能単位のブロックは、図3に示すハードウェア構成によって実現される。但し、送信権調停装置10が備える各部の実現手段は、上記に限定されない。すなわち、送信権調停装置10は、物理的に結合した一つの装置により実現されてもよいし、物理的に分離した2つ以上の装置を有線または無線で接続し、これら複数の装置により実現されてもよい。
また、前述のプログラムを記録した記録媒体(または記憶媒体)が送信権調停装置10に供給され、送信権調停装置10は、記録媒体に格納されたプログラムを読み込み、実行してもよい。すなわち、本実施形態は、送信権調停装置10が実行するプログラムを、一時的にまたは非一時的に、記憶する記録媒体の実施形態を含む。
次に本実施形態の動作について、図面を参照して詳細に説明する。
図4は、送信権調停装置10におけるリクエストの受信及び送信の動作を示すフローチャートである。
尚、リクエスト、リクエスト情報、及び計時値は、図3の記憶部1071に記憶されるものとする。
送信権調停装置10は、例えば、電源が投入されたことを契機に、図4に示す動作を開始する。
送信権調停装置10は、初期設定処理を実行する(S600)。送信権調停装置10は、初期設定処理において、記憶部1071上のリクエスト500及びリクエスト情報テーブル510の領域を0クリアする。
また、送信権調停装置10は、初期設定処理において、一定時間(例えば、1マイクロ秒)毎に、タイムアウトを発生するインターバルタイマを設定する。このタイムアウトは、リクエスト選出部200がリトライ処理時間の計時値を更新する動作の契機となる。尚、リトライ処理時間の計時値を更新する動作の詳細は、後述する。
次に、リクエスト送信制御部100は、リクエスト発行部411からリクエストを受信したか否かを確認する(S602)。受信した場合(S602でYES)、処理はS604へ進む。受信しなかった場合(S602でNO)、処理はS620へ進む。
S602において、リクエスト送信制御部100は、受信したリクエストを記憶部1071に記憶する(S604)。
図5は、記憶部1071に記憶されるリクエスト500の構造の一例を示す図である。図5に示すように、リクエスト500は、例えば、リクエスト識別子501と、リクエスト送信先識別子502と、リクエスト内容503とを含む。
リクエスト識別子501は、例えば、リクエスト発行部411それぞれを識別する発行元識別子(例えば、PRQ1)とそのリクエスト発行部411毎のシリアル番号(例えば、001)とからなる(例えば、PRQ1−001)。
リクエスト送信先識別子502は、例えば、スレーブユニット420のバスインタフェース400上のアドレスである。
リクエスト内容503は、スレーブユニット420のリクエスト実行部421への指示内容(例えば、コマンド及びパラメータ)である。
図4に戻って、次に、リクエスト送信制御部100は、リクエスト500からリクエスト識別子501を抽出し、抽出したリクエスト識別子501を含むリクエスト情報を、リクエスト選出部200に出力する(S606)。
次に、リクエスト選出部200は、受け取ったリクエスト情報に基づいて、図6に示すようなリクエスト情報テーブル510を更新する(S608)。そして、処理はS602へ戻る。
図6は、記憶部1071に記憶されるリクエスト情報テーブル510の一例を示す図である。図6に示すようにリクエスト情報テーブル510は、リクエスト情報であるリクエスト識別子501と送信待ちフラグ514と計時値515との組を1以上含む。
送信待ちフラグ514は、「1」の場合、そのリクエスト識別子501で特定されるリクエストが送信待ち状態であることを示し、「0」の場合、そのリクエストが送信待ち状態ではない状態を示す。
計時値515は、例えば、そのリクエスト識別子501で特定されるリクエストのリトライ処理時間を、例えば、マイクロ秒単位の時間で示す数値である。
ここで、リクエスト選出部200は、例えば、以下のようにしてリクエスト情報テーブル510を更新する。リクエスト選出部200は、受け取ったリクエスト情報のリクエスト識別子501がリクエスト情報テーブル510に既に登録されている場合、そのリクエスト識別子501に対応する送信待ちフラグ514を「1」に設定する。また、リクエスト選出部200は、受け取ったリクエスト情報のリクエスト識別子501がリクエスト情報テーブル510に登録されていない場合、そのリクエスト識別子501をリクエスト情報テーブル510に登録する。この場合、リクエスト選出部200は、登録したリクエスト識別子501に対応する送信待ちフラグ514を「1」に設定し、計時値515を「0」にクリアする。
ステップ620において、リクエスト選出部200は、リクエスト情報テーブル510を参照し、送信待ちフラグ514が「1」の内で、計時値515が最大であるリクエスト識別子501を抽出する(S620)。
次に、リクエスト選出部200は、抽出したリクエスト識別子501を含む選出リクエスト情報を生成し、リクエスト送信制御部100に出力する(S622)。
次に、リクエスト送信制御部100は、受け取った選出リクエスト情報に含まれるリクエスト識別子501に対応するリクエストをバスインタフェース制御部412に送信する(S624)。
次に、リクエスト送信制御部は、送信したリクエストのリクエスト識別子501に対応する、リクエスト情報テーブル510の送信待ちフラグ514を「0」に設定する(S26)。そして、処理は、S602へ戻る。
図7は、送信権調停装置10のリトライ処理時間の計時の動作を示すフローチャートである。
リクエスト選出部200は、上述したインターバルタイマのタイムアウトを契機に、図7に示す動作を開始する。
リクエスト選出部200は、リクエスト情報テーブル510を参照し、計時値515の加算をしていないリクエスト識別子501を検出する(S640)。
次に、リクエスト選出部200は、リクエスト識別子501を検出したか否かを判定する(S642)。リクエスト識別子501を検出しなかった場合(S642でNO)、処理は終了する。
リクエスト識別子501を検出した場合(S642でYES)、リクエスト選出部200は、検出したリクエスト識別子501に対応する計時値515を、「1」加算する(S64)。そして、処理は、S640へ戻る。
図8は、送信権調停装置10が、スレーブユニット420において実行が完了したリクエストを示す完了リクエスト情報を受信した場合の動作を示すフローチャートである。
尚、完了リクエスト情報は、スレーブユニット420において実行が完了したリクエストに対応するリクエスト識別子501を含む。
リクエスト送信制御部100は、例えばリクエスト発行部411から、完了リクエスト情報を受信する(S650)。
次に、リクエスト送受信制御部100は、受信した完了リクエスト情報に含まれるリクエスト識別子501に基づいて、リクエスト情報テーブル510上のリクエスト情報をクリアする(S652)。例えば、リクエスト送受信制御部100は、受信した完了リクエスト情報に含まれるリクエスト識別子501と同じリクエスト識別子501をリクエスト情報テーブル510から検出する。次に、リクエスト送受信制御部100は、検出したリクエスト識別子501、そのリクエスト識別子501と組になっている送信待ちフラグ514及び計時値515を「0」にクリアする。そして、処理は終了する。
従って、リクエスト選出部200は、リクエストを検出してから(S640)、リクエスト送受信制御部100がそのリクエストの完了リクエスト情報を検出し計数値515をクリアする(S652)まで、前述のインターバルタイマのタイムアウトごとに計数値515に「1」を加算する。これにより、リトライ処理時間が計数される。
上述した本実施形態における効果は、リクエスト待ちによる空き時間の発生が、特定のスレーブに偏ることを防止することを可能にする点である。
その理由は、以下のような構成を含むからである。即ち、第1にリクエスト選出部200がリクエスト毎のリトライ処理時間を計時し、その計時値515が最大のリクエストを特定するリクエスト識別子501を選出し、出力する。第2に、リクエスト送信制御部100が選出されたリクエスト識別子501で特定されるリクエストを送信する。
上述の効果は、特許文献1に示すようなバス制御装置を含むシステムにおける、データ転送効率がスレーブ毎に異なるという問題を解決する。結果的に、本実施形態の送信権調停装置10は、複数のスレーブ間における、システムとして必要なデータ転送に要する時間を、均等に近づけ、システム全体の性能を向上させる。
[第2の実施形態]
次に、本発明の第2の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
図9は、本発明の第2の実施形態の構成を示すブロック図である。図9に示すように本実施形態に係る送信権調停装置20は、リクエスト送信制御部101とリクエスト選出部201とを含む。
図2に示すシステムは、第1の実施形態の送信権調停装置10に変えて、本実施形態の送信権調停装置20を含んでもよい。
リクエスト送信制御部101は、リクエスト格納部110、リクエスト格納部120、リクエスト格納部130及びリクエスト送信部150を含む。以後、リクエスト格納部110、リクエスト格納部120及びリクエスト格納部130を総称する場合、リクエスト格納部110−130と記載する。尚、リクエスト格納部は、本実施形態の例に係わらず、任意の数であってよい。
リクエスト格納部110−130それぞれは、リクエスト発行部411から受信したリクエスト111、リクエスト121及びリクエスト131を格納する。以後、リクエスト111、リクエスト121及びリクエスト131を総称する場合、リクエスト111−131と記載する。また、リクエスト格納部110−130それぞれは、格納したリクエスト111−131それぞれに対応する、格納リクエスト情報(単に「リクエスト情報」とも呼ばれる)112、格納リクエスト情報122及び格納リクエスト情報132を出力する。以後、格納リクエスト情報112、格納リクエスト情報122及び格納リクエスト情報132を総称する場合、格納リクエスト情報112−132と記載する。
リクエスト送信部150は、後述する選出リクエスト情報241に基づいて、リクエスト格納部110−130に格納されているリクエスト111−131の内のいずれかを選択する。続けて、リクエスト送信部150は、選択したリクエスト111−131を、送信する。選択したリクエスト111−131の送信と同時に、リクエスト送信部150は、送信したリクエスト111−131を特定するリクエスト送信情報151を、リクエスト選出部201へ出力する。
リクエスト選出部201は、リクエスト情報格納部210と、リトライ処理時間算出部220と、選出リクエスト情報生成部240とを含む。
図10は、本実施形態のリクエスト情報格納部210及びリトライ処理時間算出部220の構成を示すブロック図である。
図10を参照すると、リクエスト情報格納部210は、リクエスト情報レジスタ211、リクエスト情報レジスタ212及びリクエスト情報レジスタ213を含む。以後、リクエスト情報レジスタ211、リクエスト情報レジスタ212及びリクエスト情報レジスタ213を総称する場合、リクエスト情報レジスタ211−213と記載する。尚、リクエスト情報レジスタは、本実施形態の例に係わらず、またリクエスト発行部の数及びリクエスト格納部の数に係わらず、任意の数であってよい。
図11は、リクエスト情報レジスタ211の一例を示す図である。図11に示すように、リクエスト情報レジスタ211は、リクエスト識別子と送信待ちフラグと計時フラグとを格納する。尚、リクエスト情報レジスタ212及びリクエスト情報レジスタ213は、リクエスト情報レジスタ211と同様である。
リクエスト情報格納部210は、リクエスト格納部110−130から、格納リクエスト情報112−132を受け取る。そして、リクエスト情報格納部210は、格納リクエスト情報112−132に含まれるリクエスト識別子を、空(リクエスト識別子を格納していない状態)のリクエスト情報レジスタ211−213に、順次格納する。
また、リクエスト情報格納部210は、リクエスト情報レジスタ211−213に、リクエスト識別子を格納すると同時に、送信待ちフラグを「1(送信待ち状態であることを示す)」にセットする。
また、リクエスト情報格納部210は、リクエスト送信部150からリクエスト送信情報151を受け取る。そして、リクエスト情報格納部210は、受け取ったリクエスト送信情報151で特定されるリクエスト111−131に対応するリクエスト情報レジスタ211−213の送信待ちフラグを「0(送信待ち状態でないことを示す)」にセットする。
また、リクエスト情報格納部210は、リクエスト情報レジスタ211−213に、リクエスト識別子を格納すると同時に、そのリクエスト情報レジスタ211−213の計時フラグを「0(計時停止)」にセットする。
また、リクエスト情報格納部210は、リクエスト送信部150から受け取ったリクエスト送信情報151で特定されるリクエスト111−131に対応するリクエスト情報レジスタ211−213の計時フラグを「1(計時開始)」にセットする。
更に、リクエスト情報格納部210は、完了リクエスト情報401を受け取った場合、完了リクエスト情報401に含まれるリクエスト識別子と同一の、リクエスト識別子を含むリクエスト情報レジスタ211−213を空にする。ここで、リクエスト情報レジスタ211−213を空にするとは、リクエスト情報レジスタ211−213をリクエスト識別子を格納していない状態(例えば「0」)にすることである。
尚、完了リクエスト情報401は、その完了リクエスト情報401に含まれるリクエスト識別子で特定されるリクエストの処理が、リクエスト送信先(スレーブユニット420)において完了したことを示す情報である。また、リクエスト情報格納部210は、リクエスト情報レジスタ211−213を空にすると同時に、送信待ちフラグ及び計時フラグを「0」にセットする。
リクエスト情報レジスタ211−213それぞれは、各送信待ちフラグの状態(「1」及び「0」)に対応する、送信待ち状態信号(「1」及び「0」)2114、送信待ち状態信号2124及び送信待ち状態信号2134それぞれを、選出リクエスト情報生成部240に出力する。以後、送信待ち状態信号2114、送信待ち状態信号2124及び送信待ち状態信号2134を総称する場合は、送信待ち状態信号2114−2134と記載する。また、リクエスト情報レジスタ211−213それぞれは、計時フラグの状態(「1」及び「0」)に対応する、計時信号(「1」及び「0」)2115、計時信号2125及び計時信号2135をカウンタ221−223それぞれに出力する。
リクエスト情報レジスタ211−213それぞれは、格納しているリクエスト識別子を格納リクエスト識別子2111、格納リクエスト識別子2122及び格納リクエスト識別子2133として、選出リクエスト情報生成部240へ出力する。以後、格納リクエスト識別子2111、格納リクエスト識別子2122及び格納リクエスト識別子2133を総称する場合、格納リクエスト識別子2111−2133と記載する。尚、リクエスト情報レジスタ211−213それぞれは、リクエスト識別子を格納していない場合、「0」を格納リクエスト識別子2111−2133として、選出リクエスト情報生成部240へ出力する。
図10を参照すると、リトライ処理時間算出部220は、カウンタ221、カウンタ222及びカウンタ223を含む。以後、カウンタ221、カウンタ222及びカウンタ223を総称する場合、カウンタ221−223と記載する。各カウンタ221−223は、リクエスト情報レジスタ211−213に1対1に対応する。
カウンタ221−223それぞれは、リクエスト情報レジスタ211−213から受け取る計時信号2115−2135が「0」から「1」に変化すると、保持しているカウント値をリセット(「0」に)し、計時を開始する。また、カウンタ221−223それぞれは、リクエスト情報レジスタ211−213受け取った計時信号2115−2135が「1」から「0」に変化すると、計時を停止する。
また、カウンタ221−223それぞれは、保持しているカウント値を、計時値2211、計時値2222及び計時値2233として出力する。以後、計時値2211、計時値2222及び計時値2233を総称する場合、計時値2211−計時値2233と記載する。
図12は、本実施形態の選出リクエスト情報生成部240の構成を示すブロック図である。
選出リクエスト情報生成部240は、リクエスト情報格納部210から受け取った格納リクエスト識別子2111−2133及び送信待ち状態信号2114−2134と、リトライ処理時間算出部220から受け取った計時値2211−2233とに基づいて、選出リクエスト情報241を生成し、リクエスト送信部150へ出力する。
図12に示すように、選出リクエスト情報生成部240は、比較器231、比較器232、比較器233、否定論理素子242、否定論理積素子243、否定論理積素子244、否定論理積素子245及び選択器246を含む。
比較器231は、比較値Bと比較値Aとを比較し、比較値Aが比較値B未満の場合「1」を出力し、比較値Aが比較値B以上の場合「0」を出力する。
比較器232は、比較値Cと比較値Bとを比較し、比較値Bが比較値C未満の場合「1」を出力し、比較値Bが比較値C以上の場合「0」を出力する。
比較器233は、比較値Cと比較値Aとを比較し、比較値Aが比較値C未満の場合「1」を出力し、比較値Aが比較値C以上の場合「0」を出力する。
ここで、比較値Aは、送信待ち状態信号2114(例えば、「1」)に対応する値(この場合「1」)と、計時値2211(例えば、「00010101」)とをビット単位で合成した値(「100010101」)である。また、比較値Bは、送信待ち状態信号2124に対応する値と、計時値2222とをビット単位で合成した値である。また、比較値Cは、送信待ち状態信号2134に対応する値と、計時値2233とをビット単位で合成した値である。
否定論理素子242、否定論理積素子243、否定論理積素子244及び否定論理積素子245は、図12に示すように接続される。比較器231、比較器232及び比較器233の値に基づいて、否定論理積素子244及び否定論理積素子245それぞれは、次に説明するように、「0」または「1」を出力する。比較値B及び比較値Cの両方が比較値A以下である場合、否定論理積素子244及び否定論理積素子245それぞれは、格納リクエスト識別子2111を選択することを示す、「0」及び「1」を出力する。また、否定論理積素子244及び否定論理積素子245それぞれは、比較値Aが比較値B未満であって比較値Cが比較値B以下である場合、格納リクエスト識別子2122を選択することを示す、「1」及び「0」を出力する。また、否定論理積素子244及び否定論理積素子245それぞれは、比較値A及び比較値Bの両方が比較値C未満である場合、格納リクエスト識別子2133を選択することを示す、「1」及び「1」を出力する。
選択器246は、入力された否定論理積素子244及び否定論理積素子245の出力に基づいて、リクエスト情報格納部210から受け取った格納リクエスト識別子2111−2133のいずれかを選択し、選出リクエスト情報241として、リクエスト送信部150へ出力する。
次に本実施形態の動作について、図面を参照して詳細に説明する。
図13乃至図15は、3つのリクエスト発行部411がリクエストを発行し、リトライし、あるタイミングでリトライが競合した場合の、本実施形態の動作を示すタイムチャートである。
図13乃至図15において、最上行の「Txx」(例えば、T00)は、送信権調停装置20を含むマスターユニット410の各動作タイミングを示している。この動作タイミングは、カウンタ221、カウンタ222及びカウンタ223のカウント値更新のタイミングと同期している。
図13乃至図15において、状態P110、状態P120及び状態P130それぞれは、各動作タイミングにおける、リクエスト格納部110−130の格納状態を示す。例えば「RQ1」は、その動作タイミングにおいて、リクエスト111を格納していることを示す。また、「0」は、その動作タイミングにおいて、空(リクエストを格納していない状態)であることを示す。
図13乃至図15において、状態P150は、各動作タイミングにおける、リクエスト送信部150の送信状態を示す。例えば「TRQ1」は、その動作タイミングでリクエスト111を送信したことを示す。また、「0」は、その動作タイミングでリクエストを送信しなかったことを示す。
図13乃至図15において、各動作タイミングにおける、状態P211、状態P212及び状態P213それぞれは、リクエスト情報レジスタ211、リクエスト情報レジスタ212及びリクエスト情報レジスタ213それぞれの格納状態を示す。例えば「IRQ1」は、その動作タイミングにおいて、リクエスト111のリクエスト情報を格納していることを示す。また、「0」は、その動作タイミングにおいて、空(リクエスト情報を格納していない状態)であることを示す。
図13乃至図15において、各動作タイミングにおける、状態P2114、状態P2124及び状態P2134それぞれは、リクエスト情報レジスタ211、リクエスト情報レジスタ212及びリクエスト情報レジスタ213それぞれの送信待ちフラグの状態を示す。
図13乃至図15において、各動作タイミングにおける、状態P2115、状態P2125及び状態P2135それぞれは、リクエスト情報レジスタ211、リクエスト情報レジスタ212及びリクエスト情報レジスタ213それぞれの計時フラグの状態を示す。
図13乃至図15において、各動作タイミングにおける、状態P2211、状態P2222及び状態P2233それぞれは、各動作タイミングにおける、カウンタ221、カウンタ222及びカウンタ223それぞれのカウント値の出力である計時値2211、計時値2222及び計時値2233の出力状態を示す。
図13乃至図15おいて、状態P241は、各動作タイミングにおける、選出リクエスト情報241の出力の状態を示す。例えば、「SRQ1」は、リクエスト111のリクエスト情報を出力したことを示す。
図13乃至図15において、状態P401は、各動作タイミングにおける、完了リクエスト情報401の状態を示す。例えば、「CRQ3」は、スレーブユニット420におけるRQ3の処理が完了したことを通知する、完了リクエスト情報401が出力されたことを示す。また、「0」は、その動作タイミングにおいて、リクエストが完了したことを示す完了リクエスト情報401は、出力されなかったことを示す。
T00において、3つのリクエスト発行部411は、リクエスト111(以後、RQ1と表記する)、リクエスト121(以後、RQ2と表記する)、リクエスト131(以後、RQ3と表記する)を発行する。これらを受けて、リクエスト格納部110−130それぞれは、RQ1、RQ2及びRQ3を格納する(状態P110、状態P120及び状態P130それぞれが、「RQ1」、「RQ2」、及び「RQ3」)。同時に、リクエスト格納部110−130それぞれは、格納リクエスト情報112−132を出力する。
T00において、更に、リクエスト情報格納部210は、受け取った格納リクエスト情報112−132に基づいて、リクエスト情報レジスタ211−213それぞれに、RQ1、RQ2及びRQ3を特定するリクエスト識別子を格納する(状態P211、状態P212及び状態P213それぞれが、「IRQ1」、「IRQ2」及び「IRQ3」)。
同時に、リクエスト情報格納部210は、リクエスト情報レジスタ211−213それぞれの送信待ちフラグを「1」にセットする(状態P2114、状態P2124及び状態P2134が、「1」)。更に、リクエスト情報格納部210は、リクエスト情報レジスタ211−213それぞれの計時フラグを「0」にセットする(状態P2115、状態P2125及び状態P2135が、「0」)。
尚、上述の状態において、カウンタ221−223が出力する計時値2211−2233それぞれは、いずれも「0」である(状態P2211、状態P2222及び状態P2233が、「0」)。
T00において、更に、選出リクエスト情報生成部240は、カウンタ221−223から受け取った計時値2211−2233及びリクエスト情報格納部210から受け取った送信待ち状態信号2114−2134に基づいて、リクエスト情報格納部210から受け取った格納リクエスト識別子2111−2133から格納リクエスト識別子2111を選択し、選出リクエスト情報241として出力する(状態P241が、「SRQ1」)。
次に、T01において、リクエスト送信部150は、状態P241の「SRQ1」に基づいて、RQ1を送信する(状態P150が「TRQ1」)。同時に、リクエスト送信部150は、送信したリクエストを特定するリクエスト識別子501を含む、リクエスト送信情報151を出力する。
T01において、更に、リクエスト情報格納部210は、受け取ったリクエスト送信情報151に含まれるリクエスト識別子501と同一の値の格納リクエスト識別子2111を格納しているリクエスト情報レジスタ211の送信待ちフラグを「0」にセットする(状態P2114が、「0」)。
T01において、更に、リクエスト情報格納部210は、そのリクエスト情報レジスタ211の計時フラグを「1」にセットする(状態P2115が、「1」)。これにより、リクエスト情報レジスタ211は、計時信号2115として「1」を出力する。
T01において、更に、カウンタ221は、「0」から「1」に変化した計時信号2115を受け取ったことに基づいて、カウント値を初期化し、計時を開始する。尚、カウンタ221が出力する計時値2211は、TO1においては未だ「0」である。
T01において、更に、選出リクエスト情報生成部240は、カウンタ221−223から受け取った計時値2211−2233及びリクエスト情報格納部210から受け取った送信待ち状態信号2114−2134に基づいて、リクエスト情報格納部210から受け取った格納リクエスト識別子2111−2133から格納リクエスト識別子2122を選択し、選出リクエスト情報241として出力する(状態P241が、「SRQ2」)。
ここで、選出リクエスト情報生成部240の動作を、計時値2211−計時値2233それぞれは、8ビットの値であるとして具体的に説明する。
比較器231において、比較値Bは、送信待ち状態信号2124(「1」)に対応する値の「1」と、計時値2222(「00000000」)とをビット単位で合成した値(「100000000」)である。また、比較値Aは、送信待ち状態信号2114(「0」)に対応する値の「0」と、計時値2211(「00000000」)とをビット単位で合成した値(「000000000」)である。従って、比較器231は、「1」を出力する。
また、比較器232において、比較値Cは、送信待ち状態信号2134(「1」)に対応する値の「1」と、計時値2233(「00000000」)とをビット単位で合成した値(「100000000」)である。また、比較値Bは、送信待ち状態信号2124(「1」)に対応するの「1」値と、計時値2222(「00000000」)とをビット単位(「100000000」)で合成した値である。従って、比較器232は、「0」を出力する。
また、比較器233において、比較値Cは、送信待ち状態信号2134(「1」)に対応する値の「1」と、計時値2233(「00000000」)とをビット単位で合成した値(「100000000」)である。また、比較値Aは、送信待ち状態信号2114(「0」)に対応する値の「0」と、計時値2211(「00000000」)とをビット単位で合成した値(「000000000」)である。従って、比較器233は、「1」を出力する。
比較器231、比較器232及び比較器233の出力に基づいて、否定論理積素子244及び否定論理積素子245それぞれは、「1」及び「0」を出力する。
この場合、選択器246は、格納リクエスト識別子2122を選択し、選出リクエスト情報241として出力する。
次に、T02においても、同様な動作により、リクエスト送信部150は、RQ2を送信する(状態P150が「TRQ2」)。また、選択器246は、格納リクエスト識別子2133を選択し、選出リクエスト情報241として出力する(状態P241が、「SRQ3」)。
次に、T03においても、同様な動作により、リクエスト送信部150は、RQ3を送信する(状態P150が「TRQ3」)。また、選択器246は、格納リクエスト識別子2111を選択し、選出リクエスト情報241として出力する。但し、次のT04において、リクエスト格納部110が、空であるため、リクエスト送信部150は、リクエストを送信しない。
尚、カウンタ222はT02において、及びカウンタ223はT03において、「0」から「1」に変化した計時信号2125を受け取ったことに基づいて、カウント値を初期化し、計時を開始する。カウンタ221、カウンタ222及びカウンタ223それぞれのカウント値の出力である計時値2211、計時値2222及び計時値2233は、例えば、T05において、「4」、「3」及び「2」である。
T10、T20及びT30において、リクエスト発行部411は、リトライ処理として、リクエスト111を送信する。
送信権調停装置20は、これらに基づいて、T11、T21及びT31それぞれにおいて、RQ1を送信する。同時に、送信権調停装置20は、カウンタ221を初期化し、計時を開始する。
T22において、リクエスト発行部411は、リトライ処理として、リクエスト121を発行する。
送信権調停装置20は、これらに基づいて、T23において、RQ2を送信する。同時に、送信権調停装置20は、カウンタ222を初期化し、計時を開始する。
T40において、リクエスト発行部411は、リトライ処理として、リクエスト111、リクエスト121及びリクエスト131を発行する。
これらを受けて、リクエスト格納部110−130それぞれは、RQ1、RQ2及びRQ3を格納する。同時に、リクエスト格納部110−130それぞれは、格納リクエスト情報112−132を出力する。
T40において、更に、リクエスト情報格納部210は、受け取った格納リクエスト情報112−132に基づいて、リクエスト情報レジスタ211−213それぞれに、RQ1、Q2及びRQ3のリクエスト識別子を格納する。
同時に、リクエスト情報格納部210は、リクエスト情報レジスタ211−213それぞれの送信待ちフラグを「1」にセットする。更に、リクエスト情報格納部210は、リクエスト情報レジスタ211−213それぞれの計時フラグを「0」にセットする。
尚、上述の状態において、カウンタ221−223が出力する計時値2211−2233それぞれは、「9」、「17」及び「37」である。
T40において、更に、選出リクエスト情報生成部240は、カウンタ221−223から受け取った計時値2211−2233及びリクエスト情報格納部210から受け取った送信待ち状態信号2114−2134に基づいて、リクエスト情報格納部210から受け取った格納リクエスト識別子2111−2133から格納リクエスト識別子2133を選択し、選出リクエスト情報241として出力する(状態P241が、「SRQ3」)。
次に、T41において、上述と同様な動作により、リクエスト送信部150は、RQ3を送信する(状態P150が「TRQ3」)。また、選択器246は、格納リクエスト識別子2122を選択し、選出リクエスト情報241として出力する(状態P241が、「SRQ2」)。
次に、T42において、同様な動作により、リクエスト送信部150は、RQ2を送信する(状態P150が「TRQ2」)。また、選択器246は、格納リクエスト識別子2111を選択し、選出リクエスト情報241として出力する(状態P241が、「SRQ1」)。
次に、T43において、同様な動作により、リクエスト送信部150は、RQ1を送信する(状態P150が「TRQ1」)。
T45において、リクエスト発行部411は、スレーブユニット420におけるRQ3の処理が完了したことを通知する、完了リクエスト情報401を出力する(状態P401が「CRQ3」)。
次に、T46において、リクエスト情報格納部210は、リクエスト情報レジスタ213を空にする(状態P213及び状態P2135が「0」)。
以上が、本実施形態の動作の説明である。
尚、選出リクエスト情報生成部240は、上述の構成に係わらず、計時値(リトライ処理の待ち時間)が最大のリクエスト識別子を選出し、出力するように構成されてよい。
また、リクエスト選出部201は、上述の構成に係わらず、送信待ち状態であって、計時値が最大のリクエスト識別子を選出するように構成されてよい。
上述した本実施形態における効果は、第1の実施形態の効果に加え、リクエストの送信権調停処理をより高速に実行することを可能にする点である。
その理由は、選出リクエスト情報生成部240をハードウェア回路で構成したからである。
[第3の実施形態]
次に、本発明の第3の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
本実施形態は、第1の実施形態に比べて、計時値515を「0」でクリアすることに替えて、計時値515をリクエスト送信先に対応する初期値に設定する点が異なる。
図16は、計時初期値テーブル530の例を示す図である。図16に示すように、計時初期値テーブル530は、リクエスト送信先識別子502と計時初期値532との組を、1以上含む。
図4のS606において、リクエスト送信制御部100は、受信したリクエスト500からリクエスト識別子501及びリクエスト送信先識別子502を抽出する。続けて、リクエスト送信制御部100は、抽出したリクエスト識別子501及びリクエスト送信先識別子502を含むリクエスト情報を、リクエスト選出部200に出力する。
図4のS608において、リクエスト選出部200は、受け取ったリクエスト情報に基づいて、リクエスト情報テーブル510を更新する。
ここで、リクエスト選出部200は、計時初期値テーブル530を参照し、受け取ったリクエスト情報に含まれるリクエスト送信先識別子502に対応する、計時初期値532を取得する。続けて、リクエスト選出部200は、取得した計時初期値532に基づいて計時値515を設定する。
尚、本実施形態は、以下のように第2の実施形態を基にしてもよい。
図17は、本実施形態に係る送信権調停装置20のリクエスト選出部301の一部の構成を示すブロック図である。
図17を参照すると、本実施形態のリクエスト選出部301は、初期値格納手段351を更に含む。また、本実施形態のリクエスト選出部301は、リクエスト情報レジスタ211、リクエスト情報レジスタ212及びリクエスト情報レジスタ213に替えてリクエスト情報レジスタ331、リクエスト情報レジスタ332及びリクエスト情報レジスタ333を含む。以後、リクエスト情報レジスタ331、リクエスト情報レジスタ332及びリクエスト情報レジスタ333を総称する場合、リクエスト情報レジスタ331−333と記載する。
図18は、リクエスト情報レジスタ331の一例を示す図である。図18に示すように、リクエスト情報レジスタ331は、リクエスト識別子とリクエスト先識別子と送信待ちフラグと計時フラグとを格納する。尚、リクエスト情報レジスタ332及びリクエスト情報レジスタ333は、リクエスト情報レジスタ331と同様である。
また、リクエスト情報レジスタ331−333それぞれは、計時信号2115−2125の出力を「0」から「1」に変更するとき、同時に、初期値格納手段351にリクエスト先識別子を出力する。
初期値格納手段351は、受け取ったリクエスト先識別子に対応する計時初期値を、カウンタ221-223に出力する。
カウンタ221-223それぞれは、計時信号2115−2125が「0」から「1」に変化した場合、受け取った計時初期値をカウンタ値として設定する。
こうして、本実施形態では各計時値の初期値を、リクエストの行き先に対応して設定可能としている。従って、本実施形態では、リクエストの行き先に基づいて、リクエストの発行調停での優先順位を制御することが可能になる。
例えば、マスターユニット410におけるプログラムの特性により、リクエストの発行先(スレーブユニット420)が偏る場合が存在する。例えば、あるスレーブユニット420に多くのリクエストが集中するようなプログラムにおいては、リトライが発生した場合にそのスレーブユニット420行きのリクエストの送信を優先することで、全リクエストの処理時間が短縮可能となる。
尚、計時初期値テーブル530及び初期値格納手段351の内容は、例えば、図示しない手段により、ユーザが予め設定する。また、計時初期値テーブル530及び初期値格納手段351の内容は、マスターユニット410の図示しない手段が、運用形態に応じて、送信権調停装置10に設定するようにしてもよい。
上述した本実施形態における第1の効果は、第1の実施形態或いは第2の実施形態の効果に加え、リクエスト選出部200が選出するリクエスト識別子の選出優先度を、そのリクエスト識別子で特定されるリクエストの送信先に応じて、調整することを可能にする点である。
その理由は、計時初期値テーブル530を含み、リクエスト選出部200は、計時初期値テーブル530を参照し、リクエスト送信先識別子502に対応する、計時初期値532計時初期値532に基づいて計時値515を設定するようにしたからである。
上述した本実施形態における第2の効果は、ユーザによる送信権調停処理のチューンナップが可能になる点である。
その理由は、計時初期値テーブル530を、ユーザが予め設定するようにしたからである。
以上、各実施形態及び実施例を参照して本発明を説明したが、本発明は上記実施形態及び実施例に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しえるさまざまな変更をすることができる。
以上の各実施形態で説明した各構成要素は、必ずしも個々に独立した存在である必要はない。例えば、各構成要素は、複数の構成要素が1個のモジュールとして実現されたり、1つの構成要素が複数のモジュールで実現されたりしてもよい。また、各構成要素は、ある構成要素が他の構成要素の一部であったり、ある構成要素の一部と他の構成要素の一部とが重複していたり、といったような構成であってもよい。
以上説明した各実施形態における各構成要素及び各構成要素を実現するモジュールは、必要に応じ可能であれば、ハードウェア的に実現されても良いし、コンピュータ及びプログラムで実現されても良いし、ハードウェア的なモジュールとコンピュータ及びプログラムとの混在により実現されても良い。プログラムは、磁気ディスクや半導体メモリなど、不揮発性のコンピュータ可読記録媒体に記録されて提供され、コンピュータの立ち上げ時などにコンピュータに読み取られる。この読み取られたプログラムは、そのコンピュータの動作を制御することにより、そのコンピュータを前述した各実施形態における構成要素として機能させる。
また、以上説明した各実施形態では、複数の動作をフローチャートの形式で順番に記載してあるが、その記載の順番は複数の動作を実行する順番を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の順番は内容的に支障しない範囲で変更することができる。
更に、以上説明した各実施形態では、複数の動作は個々に相違するタイミングで実行されることに限定されない。例えば、ある動作の実行中に他の動作が発生したり、ある動作と他の動作との実行タイミングが部分的に乃至全部において重複していたりしていてもよい。
更に、以上説明した各実施形態では、ある動作が他の動作の契機になるように記載しているが、その記載はある動作と他の動作の全ての関係を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の関係は内容的に支障のない範囲で変更することができる。また各構成要素の各動作の具体的な記載は、各構成要素の各動作を限定するものではない。このため、各構成要素の具体的な各動作は、各実施形態を実施する上で機能的、性能的、その他の特性に対して支障をきたさない範囲内で変更されて良い。