(57)【特許請求の範囲】
【請求項１】
複数のリクエスト発行元からリクエストを受信し、前記リクエストを順次送信するリクエスト送信制御手段と、
前記リクエストを識別するリクエスト情報に基づいて、前記リクエスト毎の前記リクエスト発行元におけるリトライ処理時間を計時し、送信待ち状態の前記リクエストの内、前記リトライ処理時間の計時値が最大の前記リクエストを特定する、選出リクエスト情報を生成し、出力するリクエスト選出手段と、を含み、
前記リクエスト送信制御手段は、前記選出リクエスト情報で特定される前記リクエストを送信する、
送信権調停装置。
【請求項２】
前記リクエスト選出手段は、
前記リクエストの送信先それぞれに対応する前記リトライ処理時間の計時値の初期値である計時初期値に基づいて、前記リトライ処理時間の計時値を初期化し、前記計時を開始する、
ことを特徴とする請求項１記載の送信権調停装置。
【請求項３】
前記リクエスト送信制御手段は、前記リクエストを格納する複数のリクエスト格納手段と、リクエスト送信手段と、を含み、
前記リクエスト格納手段は、前記リクエストを受信した場合に前記リクエストを格納し、
前記リクエスト送信手段は、前記選出リクエスト情報に基づいて、送信する前記リクエストを選択し、送信する
ことを特徴とする請求項１または２記載の送信権調停装置。
【請求項４】
前記リクエスト選出手段は、前記リクエスト情報を格納するリクエスト情報格納手段と、前記リトライ処理時間を計時するリトライ処理時間算出手段と、前記選出リクエスト情報を生成する選出リクエスト情報生成手段と、を含み
前記リクエスト情報格納手段は、
受け取った前記リクエスト情報と同一の内容の前記リクエスト情報を格納していない場合、受け取った前記リクエスト情報を格納し、
格納されている前記リクエスト情報に対応する前記リトライ処理時間の計時開始を前記リトライ処理時間算出手段に指示し、
リクエスト送信先における前記リクエストの処理が完了したことを示す完了リクエスト情報を受け取った場合に、前記完了リクエスト情報で特定される前記リクエスト情報を削除し、削除した前記リクエスト情報に対応する前記リトライ処理時間の計時停止を前記リトライ処理時間算出手段に指示し、
前記リトライ処理時間算出手段は、前記計時開始の指示に基づいて、前記リトライ処理時間の計時値を初期化し、前記リトライ処理時間の計時を開始し、
前記選出リクエスト情報生成手段は、前記リトライ処理時間の計時値と前記リクエスト情報格納手段が格納しているリクエスト情報とに基づいて、前記選出リクエスト情報を生成し、出力する
ことを特徴とする請求項１乃至３のいずれか１項に記載の送信権調停装置。
【請求項５】
コンピュータが、
複数のリクエスト発行元からリクエストを受信し、前記リクエストを順次送信し、
前記リクエストを識別するリクエスト情報に基づいて、前記リクエスト毎の前記リクエスト発行元におけるリトライ処理時間を計時し、
送信待ち状態の前記リクエストの内、前記リトライ処理時間の計時値が最大の前記リクエストを特定する、選出リクエスト情報を生成し、出力し、
前記リクエストを順次送信する場合、前記選出リクエスト情報で特定される前記リクエストを送信する、
送信権調停制御方法。
【請求項６】
前記リトライ処理時間を計時する場合、前記リクエストの送信先それぞれに対応する、前記リトライ処理時間の計時値の初期値である計時初期値に基づいて、前記リトライ処理時間の計時値を初期化し、前記計時を開始する、
ことを特徴とする請求項５記載の送信権調停制御方法。
【請求項７】
複数のリクエスト発行元からリクエストを受信し、前記リクエストを順次送信し、
前記リクエストを識別するリクエスト情報に基づいて、前記リクエスト毎の前記リクエスト発行元におけるリトライ処理時間を計時し、
送信待ち状態の前記リクエストの内、前記リトライ処理時間の計時値が最大の前記リクエストを特定する、選出リクエスト情報を生成し、出力し、
前記リクエストを順次送信する場合、前記選出リクエスト情報で特定される前記リクエストを送信する、処理をコンピュータに実行させる
プログラム。
【請求項８】
前記リトライ処理時間を計時する場合、前記リクエストの送信先それぞれに対応する、前記リトライ処理時間の計時値の初期値である計時初期値に基づいて、前記リトライ処理時間の計時値を初期化し、前記計時を開始する処理をコンピュータに実行させる
ことを特徴とする請求項７記載のプログラム。
【請求項９】
請求項１乃至４のいずれかに記載の送信権調停装置を搭載し、前記リクエストを発行するマスターユニットと、
前記リクエストを処理する複数のスレーブユニットと、を含み、
前記マスターユニットと前記スレーブユニットとはバスインタフェースで接続される
システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送信権調停装置、送信権調停制御方法、及びそのためのプログラムに関し、特にリトライ機能を有するインタフェースにおける送信権調停装置、送信権調停制御方法、及びそのためのプログラムに関する。
【背景技術】
【０００２】
マスター装置からスレーブ装置へリクエストを発行するインタフェースにおいて、マスター装置（リクエストの発行元）から発行される複数のリクエストの、発行順を調停する送信権調停制御の関連技術が知られている。
【０００３】
例えば、ラウンドロビン方式（回転優先方式）を用いて送信リクエストを選出する、送信権調停制御方法がある。その送信権調停制御方法による調停では、例えば、リトライ回数が多いリクエストも、一定時間待たされる。このため、スレーブ側（リクエスト受信側）で空き時間が生じる場合があり、システムとして必要なデータ転送に要する時間がスレーブ毎に異なるという問題があった。そのような課題を解決する技術が特許文献１に記載されている。特許文献１に記載のバス制御装置は、リトライ実行回数を計数するリトライ実行回数カウンタを有し、リトライ回数が一定数に達した場合、リクエスト発行の優先順位を変更する手段を有している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０９−１１４７５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した特許文献１に記載されたバス制御装置は、リクエスト待ちによる空き時間の発生が、特定のスレーブに偏る確率が高くなる、という問題点を有する。
【０００６】
その理由は、リトライ処理時間を考慮することなく、リクエストの発行を調停するための優先順位を決定しているからである。
【０００７】
例えば、第１のリクエストにおける複数回のリトライ処理の処理時間の合計に比べて、第２のリクエストにおける１回のリトライ処理の処理時間のほうが長い場合、第１のリクエストが優先的に送信権を得ることになる。従って、第２のリクエストはリトライを待たされることが多くなる。つまり、第１のリクエストに対応するスレーブ側に比べて、第２のリクエストに対応するスレーブ側では、リクエスト待ちによる空き時間が発生する確率が高くなる。
【０００８】
本発明の目的は、上述した問題点を解決する送信権調停装置、送信権調停制御方法、及びそのためのプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明の送信権調停装置は、複数のリクエスト発行元からリクエストを受信し、前記リクエストを順次送信するリクエスト送信制御手段と、
前記リクエストを識別するリクエスト情報に基づいて、前記リクエスト毎の前記リクエスト発行元におけるリトライ処理時間を計時し、送信待ち状態の前記リクエストの内、前記リトライ処理時間の計時値が最大の前記リクエストを特定する、選出リクエスト情報を生成し、出力するリクエスト選出手段と、を含み、
前記リクエスト送信制御手段は、前記選出リクエスト情報で特定される前記リクエストを送信する。
【００１０】
本発明の送信権調停制御方法は、コンピュータが、
複数のリクエスト発行元からリクエストを受信し、前記リクエストを順次送信し、
前記リクエストを識別するリクエスト情報に基づいて、前記リクエスト毎の前記リクエスト発行元におけるリトライ処理時間を計時し、
送信待ち状態の前記リクエストの内、前記リトライ処理時間の計時値が最大の前記リクエストを特定する、選出リクエスト情報を生成し、出力し、
前記リクエストを順次送信する場合、前記選出リクエスト情報で特定される前記リクエストを送信する。
【００１１】
本発明のプログラムは、
複数のリクエスト発行元からリクエストを受信し、前記リクエストを順次送信し、
前記リクエストを識別するリクエスト情報に基づいて、前記リクエスト毎の前記リクエスト発行元におけるリトライ処理時間を計時し、
送信待ち状態の前記リクエストの内、前記リトライ処理時間の計時値が最大の前記リクエストを特定する、選出リクエスト情報を生成し、出力し、
前記リクエストを順次送信する場合、前記選出リクエスト情報で特定される前記リクエストを送信する、処理をコンピュータに実行させる。
【発明の効果】
【００１２】
本発明は、リクエスト待ちによる空き時間の発生が、特定のスレーブに偏ることを防止することが可能になるという効果がある。
【図面の簡単な説明】
【００１３】
【図１】図１は、本発明の第１の実施形態の構成を示すブロック図である。
【図２】図２は、本発明の第１の実施形態に係る送信権調停装置を含むシステムの構成を示すブロック図である。
【図３】図３は、本発明の第１の実施形態における送信権調停装置とその周辺装置のハードウェア構成を示す図である
【図４】図４は、本発明の第１の実施形態の送信権調停装置におけるリクエストの受信及び送信の動作を示すフローチャートである。
【図５】図５は、本発明の第１の実施形態におけるリクエストの構造の一例を示す図である。
【図６】図６は、本発明の第１の実施形態におけるリクエスト情報テーブルの一例を示す図である。
【図７】図７は、本発明の第１の実施形態の送信権調停装置のリトライ処理時間の計時の動作を示すフローチャートである。
【図８】図８は、本発明の第１の実施形態の送信権調停装置における完了リクエスト情報を受信した場合の動作を示すフローチャートである。
【図９】図９は、本発明の第２の実施形態の構成を示すブロック図である。
【図１０】図１０は、本発明の第２の実施形態のリクエスト情報格納部とリトライ処理時間算出部との構成を示すブロック図である。
【図１１】図１１は、本発明の第２の実施形態のリクエスト情報レジスタの構成を示す図である。
【図１２】図１２は、本発明の第２の実施形態の選出リクエスト情報生成部の構成を示すブロック図である。
【図１３】図１３は、本発明の第２の実施形態の送信権調停装置における動作を示すタイムチャートである。
【図１４】図１４は、本発明の第２の実施形態の送信権調停装置における動作を示すタイムチャートである。
【図１５】図１５は、本発明の第２の実施形態の送信権調停装置における動作を示すタイムチャートである。
【図１６】図１６は、本発明の第３の実施形態における計時初期値テーブルの一例を示す図である。
【図１７】図１７は、本発明の第３の実施形態のリクエスト選出部の一部の構成を示すブロック図である。
【図１８】図１８は、本発明の第３の実施形態のリクエスト情報レジスタの構成を示す図である。
【発明を実施するための形態】
【００１４】
次に、本発明の実施形態について図面を参照して詳細に説明する。
【００１５】
［第１の実施の形態］
図１は、本発明の第１の実施形態の構成を示すブロック図である。
【００１６】
図１を参照すると、本実施形態に係る送信権調停装置１０は、リクエスト送信制御部１００とリクエスト選出部２００とを含む。
【００１７】
図２は、本実施形態に係る送信権調停装置１０を含むシステムの構成を示すブロック図である。
【００１８】
図２を参照すると、そのシステムは、マスターユニット４１０と複数のスレーブユニット４２０とバスインタフェース４００とから構成されている。マスターユニット４１０は、複数のリクエスト発行部（リクエスト発行元とも呼ばれる）４１１、送信権調停装置１０及びバスインタフェース制御部４１２を含む。スレーブユニット（リクエスト送信先とも呼ばれる）４２０は、バスインタフェース制御部４２２及びリクエスト実行部４２１を含む。マスターユニット４１０及び各スレーブユニット４２０とは、互いに、バスインタフェース４００で接続されている。尚、スレーブユニット４２０は、任意の台数であってよい。
【００１９】
リクエスト送信制御部１００は、例えばリクエスト発行部４１１から、リクエストを受信し、受信したリクエストを選出リクエスト情報（後述）に基づいて順次送信する。リクエスト送信制御部１００は、例えば、複数の送信待ち状態のリクエストの内、選出リクエスト情報で特定されるリクエストを送信する。また、リクエスト送信制御部１００は、送信待ち状態のリクエストが１つである場合、選出リクエスト情報に基づくことなく、そのリクエストを送信するようにしてもよい。リクエスト送信制御部１００は、例えば、バスインタフェース制御部４１２を介してバスインタフェース４００を経由し、スレーブユニット４２０へリクエストを送信する。
【００２０】
リクエスト選出部２００は、リクエストを識別するリクエスト情報に基づいて、リクエスト毎のリクエスト発行部４１１におけるリトライ処理時間を計時する。尚、リクエスト発行部４１１があるリクエストを最初に送信する場合のリクエスト情報と、そのリクエストをリトライで送信する場合のリクエスト情報とは同じ内容である。即ち、リクエスト選出部２００は、同じリクエスト情報で特定されるリクエストの発行間隔（即ち、リトライ処理時間）を計時する。
【００２１】
また、リクエスト選出部２００は、送信待ち状態のリクエストの内、リトライ処理時間の計時値が最大であるリクエストを特定する選出リクエスト情報を生成し、リクエスト送信制御部１００に出力する。
【００２２】
具体的には、リクエスト選出部２００は、リクエスト発行部４１１が送信したリクエストであって未だスレーブユニット４２０に送信されていないリクエストの、リトライ処理時間の計時値を比較する。次に、リクエスト選出部２００は、それらのリトライ処理時間の計時値が最大であるリクエストを特定する、選出リクエスト情報を生成する。
【００２３】
尚、リクエスト選出部２００は、例えばリクエスト送信制御部１００から、リクエスト情報を受け取る。この場合、リクエスト送信制御部１００は、受信したリクエストに基づいてリクエスト情報を生成してもよい。
【００２４】
また、リクエスト選出部２００は、例えばリクエスト発行部４１１が生成した、リクエスト情報を受信するようにしてもよい。この場合、リクエスト発行部４１１は、リクエストを送信する際に、そのリクエストに対応するリクエスト情報を送信するようにしてもよい。
【００２５】
リクエスト情報は、例えば、リクエスト発行部４１１の識別子とシリアル番号とから構成される。また、リクエスト情報は、リクエストを識別可能であれば、任意の情報であってよい。
【００２６】
尚、図１に示す構成要素は、ハードウェア単位の構成ではなく、機能単位の構成を示している。
【００２７】
次に、送信権調停装置１０のハードウェア単位の構成要素について説明する。
【００２８】
図３は、本実施形態における送信権調停装置１０とその周辺装置のハードウェア構成を示す図である。図３に示されるように、送信権調停装置１０は、ＣＰＵ（Ｃｅｎｔｒａｌ
Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０７０、記憶部１０７１、記憶装置１０７２及び通信部１０７５を含む。
【００２９】
ＣＰＵ１０７０は、オペレーティングシステム（不図示）を動作させて、本実施形態に係る送信権調停装置１０の全体の動作を制御する。また、ＣＰＵ１０７０は、例えば記憶装置１０７２に装着された不揮発性の記録媒体（不図示）から、記憶部１０７１にプログラムやデータを読み込む。そして、ＣＰＵ１０７０は、読み込んだプログラムに従って、また読み込んだデータに基づいて、図１に示すリクエスト送信制御部１００及びリクエスト選出部２００として各種の処理を実行する。
【００３０】
尚、ＣＰＵ１０７０は、通信網（不図示）に接続されている外部コンピュータ（不図示）から、記憶部１０７１にプログラムやデータをダウンロードするようにしてもよい。
【００３１】
記憶部１０７１は、プログラムやデータを記憶する。
【００３２】
記憶装置１０７２は、例えば、光ディスク、フレキシブルディスク、磁気光ディスク、外付けハードディスク及び半導体メモリであって、不揮発性の記憶媒体を含む。記憶装置１０７２は、プログラムをコンピュータ読み取り可能に記録する。また、記憶装置１０７２は、データをコンピュータ読み取り可能に記録してもよい。
【００３３】
通信部１０７５は、リクエスト送信制御部１００及びリクエスト選出部２００の一部として含まれる。
【００３４】
以上が、送信権調停装置１０のハードウェア単位の各構成要素についての説明である。
【００３５】
以上説明したように、図１に示す機能単位のブロックは、図３に示すハードウェア構成によって実現される。但し、送信権調停装置１０が備える各部の実現手段は、上記に限定されない。すなわち、送信権調停装置１０は、物理的に結合した一つの装置により実現されてもよいし、物理的に分離した２つ以上の装置を有線または無線で接続し、これら複数の装置により実現されてもよい。
【００３６】
また、前述のプログラムを記録した記録媒体（または記憶媒体）が送信権調停装置１０に供給され、送信権調停装置１０は、記録媒体に格納されたプログラムを読み込み、実行してもよい。すなわち、本実施形態は、送信権調停装置１０が実行するプログラムを、一時的にまたは非一時的に、記憶する記録媒体の実施形態を含む。
【００３７】
次に本実施形態の動作について、図面を参照して詳細に説明する。
【００３８】
図４は、送信権調停装置１０におけるリクエストの受信及び送信の動作を示すフローチャートである。
【００３９】
尚、リクエスト、リクエスト情報、及び計時値は、図３の記憶部１０７１に記憶されるものとする。
【００４０】
送信権調停装置１０は、例えば、電源が投入されたことを契機に、図４に示す動作を開始する。
【００４１】
送信権調停装置１０は、初期設定処理を実行する（Ｓ６００）。送信権調停装置１０は、初期設定処理において、記憶部１０７１上のリクエスト５００及びリクエスト情報テーブル５１０の領域を０クリアする。
【００４２】
また、送信権調停装置１０は、初期設定処理において、一定時間（例えば、１マイクロ秒）毎に、タイムアウトを発生するインターバルタイマを設定する。このタイムアウトは、リクエスト選出部２００がリトライ処理時間の計時値を更新する動作の契機となる。尚、リトライ処理時間の計時値を更新する動作の詳細は、後述する。
【００４３】
次に、リクエスト送信制御部１００は、リクエスト発行部４１１からリクエストを受信したか否かを確認する（Ｓ６０２）。受信した場合（Ｓ６０２でＹＥＳ）、処理はＳ６０４へ進む。受信しなかった場合（Ｓ６０２でＮＯ）、処理はＳ６２０へ進む。
【００４４】
Ｓ６０２において、リクエスト送信制御部１００は、受信したリクエストを記憶部１０７１に記憶する（Ｓ６０４）。
【００４５】
図５は、記憶部１０７１に記憶されるリクエスト５００の構造の一例を示す図である。図５に示すように、リクエスト５００は、例えば、リクエスト識別子５０１と、リクエスト送信先識別子５０２と、リクエスト内容５０３とを含む。
【００４６】
リクエスト識別子５０１は、例えば、リクエスト発行部４１１それぞれを識別する発行元識別子（例えば、ＰＲＱ１）とそのリクエスト発行部４１１毎のシリアル番号（例えば、００１）とからなる（例えば、ＰＲＱ１−００１）。
【００４７】
リクエスト送信先識別子５０２は、例えば、スレーブユニット４２０のバスインタフェース４００上のアドレスである。
【００４８】
リクエスト内容５０３は、スレーブユニット４２０のリクエスト実行部４２１への指示内容（例えば、コマンド及びパラメータ）である。
【００４９】
図４に戻って、次に、リクエスト送信制御部１００は、リクエスト５００からリクエスト識別子５０１を抽出し、抽出したリクエスト識別子５０１を含むリクエスト情報を、リクエスト選出部２００に出力する（Ｓ６０６）。
【００５０】
次に、リクエスト選出部２００は、受け取ったリクエスト情報に基づいて、図６に示すようなリクエスト情報テーブル５１０を更新する（Ｓ６０８）。そして、処理はＳ６０２へ戻る。
【００５１】
図６は、記憶部１０７１に記憶されるリクエスト情報テーブル５１０の一例を示す図である。図６に示すようにリクエスト情報テーブル５１０は、リクエスト情報であるリクエスト識別子５０１と送信待ちフラグ５１４と計時値５１５との組を１以上含む。
【００５２】
送信待ちフラグ５１４は、「１」の場合、そのリクエスト識別子５０１で特定されるリクエストが送信待ち状態であることを示し、「０」の場合、そのリクエストが送信待ち状態ではない状態を示す。
【００５３】
計時値５１５は、例えば、そのリクエスト識別子５０１で特定されるリクエストのリトライ処理時間を、例えば、マイクロ秒単位の時間で示す数値である。
【００５４】
ここで、リクエスト選出部２００は、例えば、以下のようにしてリクエスト情報テーブル５１０を更新する。リクエスト選出部２００は、受け取ったリクエスト情報のリクエスト識別子５０１がリクエスト情報テーブル５１０に既に登録されている場合、そのリクエスト識別子５０１に対応する送信待ちフラグ５１４を「１」に設定する。また、リクエスト選出部２００は、受け取ったリクエスト情報のリクエスト識別子５０１がリクエスト情報テーブル５１０に登録されていない場合、そのリクエスト識別子５０１をリクエスト情報テーブル５１０に登録する。この場合、リクエスト選出部２００は、登録したリクエスト識別子５０１に対応する送信待ちフラグ５１４を「１」に設定し、計時値５１５を「０」にクリアする。
【００５５】
ステップ６２０において、リクエスト選出部２００は、リクエスト情報テーブル５１０を参照し、送信待ちフラグ５１４が「１」の内で、計時値５１５が最大であるリクエスト識別子５０１を抽出する（Ｓ６２０）。
【００５６】
次に、リクエスト選出部２００は、抽出したリクエスト識別子５０１を含む選出リクエスト情報を生成し、リクエスト送信制御部１００に出力する（Ｓ６２２）。
【００５７】
次に、リクエスト送信制御部１００は、受け取った選出リクエスト情報に含まれるリクエスト識別子５０１に対応するリクエストをバスインタフェース制御部４１２に送信する（Ｓ６２４）。
【００５８】
次に、リクエスト送信制御部は、送信したリクエストのリクエスト識別子５０１に対応する、リクエスト情報テーブル５１０の送信待ちフラグ５１４を「０」に設定する（Ｓ２６）。そして、処理は、Ｓ６０２へ戻る。
【００５９】
図７は、送信権調停装置１０のリトライ処理時間の計時の動作を示すフローチャートである。
【００６０】
リクエスト選出部２００は、上述したインターバルタイマのタイムアウトを契機に、図７に示す動作を開始する。
【００６１】
リクエスト選出部２００は、リクエスト情報テーブル５１０を参照し、計時値５１５の加算をしていないリクエスト識別子５０１を検出する（Ｓ６４０）。
【００６２】
次に、リクエスト選出部２００は、リクエスト識別子５０１を検出したか否かを判定する（Ｓ６４２）。リクエスト識別子５０１を検出しなかった場合（Ｓ６４２でＮＯ）、処理は終了する。
【００６３】
リクエスト識別子５０１を検出した場合（Ｓ６４２でＹＥＳ）、リクエスト選出部２００は、検出したリクエスト識別子５０１に対応する計時値５１５を、「１」加算する（Ｓ６４）。そして、処理は、Ｓ６４０へ戻る。
【００６４】
図８は、送信権調停装置１０が、スレーブユニット４２０において実行が完了したリクエストを示す完了リクエスト情報を受信した場合の動作を示すフローチャートである。
【００６５】
尚、完了リクエスト情報は、スレーブユニット４２０において実行が完了したリクエストに対応するリクエスト識別子５０１を含む。
【００６６】
リクエスト送信制御部１００は、例えばリクエスト発行部４１１から、完了リクエスト情報を受信する（Ｓ６５０）。
【００６７】
次に、リクエスト送受信制御部１００は、受信した完了リクエスト情報に含まれるリクエスト識別子５０１に基づいて、リクエスト情報テーブル５１０上のリクエスト情報をクリアする（Ｓ６５２）。例えば、リクエスト送受信制御部１００は、受信した完了リクエスト情報に含まれるリクエスト識別子５０１と同じリクエスト識別子５０１をリクエスト情報テーブル５１０から検出する。次に、リクエスト送受信制御部１００は、検出したリクエスト識別子５０１、そのリクエスト識別子５０１と組になっている送信待ちフラグ５１４及び計時値５１５を「０」にクリアする。そして、処理は終了する。
【００６８】
従って、リクエスト選出部２００は、リクエストを検出してから（Ｓ６４０）、リクエスト送受信制御部１００がそのリクエストの完了リクエスト情報を検出し計数値５１５をクリアする（Ｓ６５２）まで、前述のインターバルタイマのタイムアウトごとに計数値５１５に「１」を加算する。これにより、リトライ処理時間が計数される。
【００６９】
上述した本実施形態における効果は、リクエスト待ちによる空き時間の発生が、特定のスレーブに偏ることを防止することを可能にする点である。
【００７０】
その理由は、以下のような構成を含むからである。即ち、第１にリクエスト選出部２００がリクエスト毎のリトライ処理時間を計時し、その計時値５１５が最大のリクエストを特定するリクエスト識別子５０１を選出し、出力する。第２に、リクエスト送信制御部１００が選出されたリクエスト識別子５０１で特定されるリクエストを送信する。
【００７１】
上述の効果は、特許文献１に示すようなバス制御装置を含むシステムにおける、データ転送効率がスレーブ毎に異なるという問題を解決する。結果的に、本実施形態の送信権調停装置１０は、複数のスレーブ間における、システムとして必要なデータ転送に要する時間を、均等に近づけ、システム全体の性能を向上させる。
【００７２】
［第２の実施形態］
次に、本発明の第２の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
【００７３】
図９は、本発明の第２の実施形態の構成を示すブロック図である。図９に示すように本実施形態に係る送信権調停装置２０は、リクエスト送信制御部１０１とリクエスト選出部２０１とを含む。
【００７４】
図２に示すシステムは、第１の実施形態の送信権調停装置１０に変えて、本実施形態の送信権調停装置２０を含んでもよい。
【００７５】
リクエスト送信制御部１０１は、リクエスト格納部１１０、リクエスト格納部１２０、リクエスト格納部１３０及びリクエスト送信部１５０を含む。以後、リクエスト格納部１１０、リクエスト格納部１２０及びリクエスト格納部１３０を総称する場合、リクエスト格納部１１０−１３０と記載する。尚、リクエスト格納部は、本実施形態の例に係わらず、任意の数であってよい。
【００７６】
リクエスト格納部１１０−１３０それぞれは、リクエスト発行部４１１から受信したリクエスト１１１、リクエスト１２１及びリクエスト１３１を格納する。以後、リクエスト１１１、リクエスト１２１及びリクエスト１３１を総称する場合、リクエスト１１１−１３１と記載する。また、リクエスト格納部１１０−１３０それぞれは、格納したリクエスト１１１−１３１それぞれに対応する、格納リクエスト情報（単に「リクエスト情報」とも呼ばれる）１１２、格納リクエスト情報１２２及び格納リクエスト情報１３２を出力する。以後、格納リクエスト情報１１２、格納リクエスト情報１２２及び格納リクエスト情報１３２を総称する場合、格納リクエスト情報１１２−１３２と記載する。
【００７７】
リクエスト送信部１５０は、後述する選出リクエスト情報２４１に基づいて、リクエスト格納部１１０−１３０に格納されているリクエスト１１１−１３１の内のいずれかを選択する。続けて、リクエスト送信部１５０は、選択したリクエスト１１１−１３１を、送信する。選択したリクエスト１１１−１３１の送信と同時に、リクエスト送信部１５０は、送信したリクエスト１１１−１３１を特定するリクエスト送信情報１５１を、リクエスト選出部２０１へ出力する。
【００７８】
リクエスト選出部２０１は、リクエスト情報格納部２１０と、リトライ処理時間算出部２２０と、選出リクエスト情報生成部２４０とを含む。
【００７９】
図１０は、本実施形態のリクエスト情報格納部２１０及びリトライ処理時間算出部２２０の構成を示すブロック図である。
【００８０】
図１０を参照すると、リクエスト情報格納部２１０は、リクエスト情報レジスタ２１１、リクエスト情報レジスタ２１２及びリクエスト情報レジスタ２１３を含む。以後、リクエスト情報レジスタ２１１、リクエスト情報レジスタ２１２及びリクエスト情報レジスタ２１３を総称する場合、リクエスト情報レジスタ２１１−２１３と記載する。尚、リクエスト情報レジスタは、本実施形態の例に係わらず、またリクエスト発行部の数及びリクエスト格納部の数に係わらず、任意の数であってよい。
【００８１】
図１１は、リクエスト情報レジスタ２１１の一例を示す図である。図１１に示すように、リクエスト情報レジスタ２１１は、リクエスト識別子と送信待ちフラグと計時フラグとを格納する。尚、リクエスト情報レジスタ２１２及びリクエスト情報レジスタ２１３は、リクエスト情報レジスタ２１１と同様である。
【００８２】
リクエスト情報格納部２１０は、リクエスト格納部１１０−１３０から、格納リクエスト情報１１２−１３２を受け取る。そして、リクエスト情報格納部２１０は、格納リクエスト情報１１２−１３２に含まれるリクエスト識別子を、空（リクエスト識別子を格納していない状態）のリクエスト情報レジスタ２１１−２１３に、順次格納する。
【００８３】
また、リクエスト情報格納部２１０は、リクエスト情報レジスタ２１１−２１３に、リクエスト識別子を格納すると同時に、送信待ちフラグを「１（送信待ち状態であることを示す）」にセットする。
【００８４】
また、リクエスト情報格納部２１０は、リクエスト送信部１５０からリクエスト送信情報１５１を受け取る。そして、リクエスト情報格納部２１０は、受け取ったリクエスト送信情報１５１で特定されるリクエスト１１１−１３１に対応するリクエスト情報レジスタ２１１−２１３の送信待ちフラグを「０（送信待ち状態でないことを示す）」にセットする。
【００８５】
また、リクエスト情報格納部２１０は、リクエスト情報レジスタ２１１−２１３に、リクエスト識別子を格納すると同時に、そのリクエスト情報レジスタ２１１−２１３の計時フラグを「０（計時停止）」にセットする。
【００８６】
また、リクエスト情報格納部２１０は、リクエスト送信部１５０から受け取ったリクエスト送信情報１５１で特定されるリクエスト１１１−１３１に対応するリクエスト情報レジスタ２１１−２１３の計時フラグを「１（計時開始）」にセットする。
【００８７】
更に、リクエスト情報格納部２１０は、完了リクエスト情報４０１を受け取った場合、完了リクエスト情報４０１に含まれるリクエスト識別子と同一の、リクエスト識別子を含むリクエスト情報レジスタ２１１−２１３を空にする。ここで、リクエスト情報レジスタ２１１−２１３を空にするとは、リクエスト情報レジスタ２１１−２１３をリクエスト識別子を格納していない状態（例えば「０」）にすることである。
【００８８】
尚、完了リクエスト情報４０１は、その完了リクエスト情報４０１に含まれるリクエスト識別子で特定されるリクエストの処理が、リクエスト送信先（スレーブユニット４２０）において完了したことを示す情報である。また、リクエスト情報格納部２１０は、リクエスト情報レジスタ２１１−２１３を空にすると同時に、送信待ちフラグ及び計時フラグを「０」にセットする。
【００８９】
リクエスト情報レジスタ２１１−２１３それぞれは、各送信待ちフラグの状態（「１」及び「０」）に対応する、送信待ち状態信号（「１」及び「０」）２１１４、送信待ち状態信号２１２４及び送信待ち状態信号２１３４それぞれを、選出リクエスト情報生成部２４０に出力する。以後、送信待ち状態信号２１１４、送信待ち状態信号２１２４及び送信待ち状態信号２１３４を総称する場合は、送信待ち状態信号２１１４−２１３４と記載する。また、リクエスト情報レジスタ２１１−２１３それぞれは、計時フラグの状態（「１」及び「０」）に対応する、計時信号（「１」及び「０」）２１１５、計時信号２１２５及び計時信号２１３５をカウンタ２２１−２２３それぞれに出力する。
【００９０】
リクエスト情報レジスタ２１１−２１３それぞれは、格納しているリクエスト識別子を格納リクエスト識別子２１１１、格納リクエスト識別子２１２２及び格納リクエスト識別子２１３３として、選出リクエスト情報生成部２４０へ出力する。以後、格納リクエスト識別子２１１１、格納リクエスト識別子２１２２及び格納リクエスト識別子２１３３を総称する場合、格納リクエスト識別子２１１１−２１３３と記載する。尚、リクエスト情報レジスタ２１１−２１３それぞれは、リクエスト識別子を格納していない場合、「０」を格納リクエスト識別子２１１１−２１３３として、選出リクエスト情報生成部２４０へ出力する。
【００９１】
図１０を参照すると、リトライ処理時間算出部２２０は、カウンタ２２１、カウンタ２２２及びカウンタ２２３を含む。以後、カウンタ２２１、カウンタ２２２及びカウンタ２２３を総称する場合、カウンタ２２１−２２３と記載する。各カウンタ２２１−２２３は、リクエスト情報レジスタ２１１−２１３に１対１に対応する。
【００９２】
カウンタ２２１−２２３それぞれは、リクエスト情報レジスタ２１１−２１３から受け取る計時信号２１１５−２１３５が「０」から「１」に変化すると、保持しているカウント値をリセット（「０」に）し、計時を開始する。また、カウンタ２２１−２２３それぞれは、リクエスト情報レジスタ２１１−２１３受け取った計時信号２１１５−２１３５が「１」から「０」に変化すると、計時を停止する。
【００９３】
また、カウンタ２２１−２２３それぞれは、保持しているカウント値を、計時値２２１１、計時値２２２２及び計時値２２３３として出力する。以後、計時値２２１１、計時値２２２２及び計時値２２３３を総称する場合、計時値２２１１−計時値２２３３と記載する。
【００９４】
図１２は、本実施形態の選出リクエスト情報生成部２４０の構成を示すブロック図である。
【００９５】
選出リクエスト情報生成部２４０は、リクエスト情報格納部２１０から受け取った格納リクエスト識別子２１１１−２１３３及び送信待ち状態信号２１１４−２１３４と、リトライ処理時間算出部２２０から受け取った計時値２２１１−２２３３とに基づいて、選出リクエスト情報２４１を生成し、リクエスト送信部１５０へ出力する。
【００９６】
図１２に示すように、選出リクエスト情報生成部２４０は、比較器２３１、比較器２３２、比較器２３３、否定論理素子２４２、否定論理積素子２４３、否定論理積素子２４４、否定論理積素子２４５及び選択器２４６を含む。
【００９７】
比較器２３１は、比較値Ｂと比較値Ａとを比較し、比較値Ａが比較値Ｂ未満の場合「１」を出力し、比較値Ａが比較値Ｂ以上の場合「０」を出力する。
【００９８】
比較器２３２は、比較値Ｃと比較値Ｂとを比較し、比較値Ｂが比較値Ｃ未満の場合「１」を出力し、比較値Ｂが比較値Ｃ以上の場合「０」を出力する。
【００９９】
比較器２３３は、比較値Ｃと比較値Ａとを比較し、比較値Ａが比較値Ｃ未満の場合「１」を出力し、比較値Ａが比較値Ｃ以上の場合「０」を出力する。
【０１００】
ここで、比較値Ａは、送信待ち状態信号２１１４（例えば、「１」）に対応する値（この場合「１」）と、計時値２２１１（例えば、「０００１０１０１」）とをビット単位で合成した値（「１０００１０１０１」）である。また、比較値Ｂは、送信待ち状態信号２１２４に対応する値と、計時値２２２２とをビット単位で合成した値である。また、比較値Ｃは、送信待ち状態信号２１３４に対応する値と、計時値２２３３とをビット単位で合成した値である。
【０１０１】
否定論理素子２４２、否定論理積素子２４３、否定論理積素子２４４及び否定論理積素子２４５は、図１２に示すように接続される。比較器２３１、比較器２３２及び比較器２３３の値に基づいて、否定論理積素子２４４及び否定論理積素子２４５それぞれは、次に説明するように、「０」または「１」を出力する。比較値Ｂ及び比較値Ｃの両方が比較値Ａ以下である場合、否定論理積素子２４４及び否定論理積素子２４５それぞれは、格納リクエスト識別子２１１１を選択することを示す、「０」及び「１」を出力する。また、否定論理積素子２４４及び否定論理積素子２４５それぞれは、比較値Ａが比較値Ｂ未満であって比較値Ｃが比較値Ｂ以下である場合、格納リクエスト識別子２１２２を選択することを示す、「１」及び「０」を出力する。また、否定論理積素子２４４及び否定論理積素子２４５それぞれは、比較値Ａ及び比較値Ｂの両方が比較値Ｃ未満である場合、格納リクエスト識別子２１３３を選択することを示す、「１」及び「１」を出力する。
【０１０２】
選択器２４６は、入力された否定論理積素子２４４及び否定論理積素子２４５の出力に基づいて、リクエスト情報格納部２１０から受け取った格納リクエスト識別子２１１１−２１３３のいずれかを選択し、選出リクエスト情報２４１として、リクエスト送信部１５０へ出力する。
【０１０３】
次に本実施形態の動作について、図面を参照して詳細に説明する。
【０１０４】
図１３乃至図１５は、３つのリクエスト発行部４１１がリクエストを発行し、リトライし、あるタイミングでリトライが競合した場合の、本実施形態の動作を示すタイムチャートである。
【０１０５】
図１３乃至図１５において、最上行の「Ｔｘｘ」（例えば、Ｔ００）は、送信権調停装置２０を含むマスターユニット４１０の各動作タイミングを示している。この動作タイミングは、カウンタ２２１、カウンタ２２２及びカウンタ２２３のカウント値更新のタイミングと同期している。
【０１０６】
図１３乃至図１５において、状態Ｐ１１０、状態Ｐ１２０及び状態Ｐ１３０それぞれは、各動作タイミングにおける、リクエスト格納部１１０−１３０の格納状態を示す。例えば「ＲＱ１」は、その動作タイミングにおいて、リクエスト１１１を格納していることを示す。また、「０」は、その動作タイミングにおいて、空（リクエストを格納していない状態）であることを示す。
【０１０７】
図１３乃至図１５において、状態Ｐ１５０は、各動作タイミングにおける、リクエスト送信部１５０の送信状態を示す。例えば「ＴＲＱ１」は、その動作タイミングでリクエスト１１１を送信したことを示す。また、「０」は、その動作タイミングでリクエストを送信しなかったことを示す。
【０１０８】
図１３乃至図１５において、各動作タイミングにおける、状態Ｐ２１１、状態Ｐ２１２及び状態Ｐ２１３それぞれは、リクエスト情報レジスタ２１１、リクエスト情報レジスタ２１２及びリクエスト情報レジスタ２１３それぞれの格納状態を示す。例えば「ＩＲＱ１」は、その動作タイミングにおいて、リクエスト１１１のリクエスト情報を格納していることを示す。また、「０」は、その動作タイミングにおいて、空（リクエスト情報を格納していない状態）であることを示す。
【０１０９】
図１３乃至図１５において、各動作タイミングにおける、状態Ｐ２１１４、状態Ｐ２１２４及び状態Ｐ２１３４それぞれは、リクエスト情報レジスタ２１１、リクエスト情報レジスタ２１２及びリクエスト情報レジスタ２１３それぞれの送信待ちフラグの状態を示す。
【０１１０】
図１３乃至図１５において、各動作タイミングにおける、状態Ｐ２１１５、状態Ｐ２１２５及び状態Ｐ２１３５それぞれは、リクエスト情報レジスタ２１１、リクエスト情報レジスタ２１２及びリクエスト情報レジスタ２１３それぞれの計時フラグの状態を示す。
【０１１１】
図１３乃至図１５において、各動作タイミングにおける、状態Ｐ２２１１、状態Ｐ２２２２及び状態Ｐ２２３３それぞれは、各動作タイミングにおける、カウンタ２２１、カウンタ２２２及びカウンタ２２３それぞれのカウント値の出力である計時値２２１１、計時値２２２２及び計時値２２３３の出力状態を示す。
【０１１２】
図１３乃至図１５おいて、状態Ｐ２４１は、各動作タイミングにおける、選出リクエスト情報２４１の出力の状態を示す。例えば、「ＳＲＱ１」は、リクエスト１１１のリクエスト情報を出力したことを示す。
【０１１３】
図１３乃至図１５において、状態Ｐ４０１は、各動作タイミングにおける、完了リクエスト情報４０１の状態を示す。例えば、「ＣＲＱ３」は、スレーブユニット４２０におけるＲＱ３の処理が完了したことを通知する、完了リクエスト情報４０１が出力されたことを示す。また、「０」は、その動作タイミングにおいて、リクエストが完了したことを示す完了リクエスト情報４０１は、出力されなかったことを示す。
【０１１４】
Ｔ００において、３つのリクエスト発行部４１１は、リクエスト１１１（以後、ＲＱ１と表記する）、リクエスト１２１（以後、ＲＱ２と表記する）、リクエスト１３１（以後、ＲＱ３と表記する）を発行する。これらを受けて、リクエスト格納部１１０−１３０それぞれは、ＲＱ１、ＲＱ２及びＲＱ３を格納する（状態Ｐ１１０、状態Ｐ１２０及び状態Ｐ１３０それぞれが、「ＲＱ１」、「ＲＱ２」、及び「ＲＱ３」）。同時に、リクエスト格納部１１０−１３０それぞれは、格納リクエスト情報１１２−１３２を出力する。
【０１１５】
Ｔ００において、更に、リクエスト情報格納部２１０は、受け取った格納リクエスト情報１１２−１３２に基づいて、リクエスト情報レジスタ２１１−２１３それぞれに、ＲＱ１、ＲＱ２及びＲＱ３を特定するリクエスト識別子を格納する（状態Ｐ２１１、状態Ｐ２１２及び状態Ｐ２１３それぞれが、「ＩＲＱ１」、「ＩＲＱ２」及び「ＩＲＱ３」）。
【０１１６】
同時に、リクエスト情報格納部２１０は、リクエスト情報レジスタ２１１−２１３それぞれの送信待ちフラグを「１」にセットする（状態Ｐ２１１４、状態Ｐ２１２４及び状態Ｐ２１３４が、「１」）。更に、リクエスト情報格納部２１０は、リクエスト情報レジスタ２１１−２１３それぞれの計時フラグを「０」にセットする（状態Ｐ２１１５、状態Ｐ２１２５及び状態Ｐ２１３５が、「０」）。
【０１１７】
尚、上述の状態において、カウンタ２２１−２２３が出力する計時値２２１１−２２３３それぞれは、いずれも「０」である（状態Ｐ２２１１、状態Ｐ２２２２及び状態Ｐ２２３３が、「０」）。
【０１１８】
Ｔ００において、更に、選出リクエスト情報生成部２４０は、カウンタ２２１−２２３から受け取った計時値２２１１−２２３３及びリクエスト情報格納部２１０から受け取った送信待ち状態信号２１１４−２１３４に基づいて、リクエスト情報格納部２１０から受け取った格納リクエスト識別子２１１１−２１３３から格納リクエスト識別子２１１１を選択し、選出リクエスト情報２４１として出力する（状態Ｐ２４１が、「ＳＲＱ１」）。
【０１１９】
次に、Ｔ０１において、リクエスト送信部１５０は、状態Ｐ２４１の「ＳＲＱ１」に基づいて、ＲＱ１を送信する（状態Ｐ１５０が「ＴＲＱ１」）。同時に、リクエスト送信部１５０は、送信したリクエストを特定するリクエスト識別子５０１を含む、リクエスト送信情報１５１を出力する。
【０１２０】
Ｔ０１において、更に、リクエスト情報格納部２１０は、受け取ったリクエスト送信情報１５１に含まれるリクエスト識別子５０１と同一の値の格納リクエスト識別子２１１１を格納しているリクエスト情報レジスタ２１１の送信待ちフラグを「０」にセットする（状態Ｐ２１１４が、「０」）。
【０１２１】
Ｔ０１において、更に、リクエスト情報格納部２１０は、そのリクエスト情報レジスタ２１１の計時フラグを「１」にセットする（状態Ｐ２１１５が、「１」）。これにより、リクエスト情報レジスタ２１１は、計時信号２１１５として「１」を出力する。
【０１２２】
Ｔ０１において、更に、カウンタ２２１は、「０」から「１」に変化した計時信号２１１５を受け取ったことに基づいて、カウント値を初期化し、計時を開始する。尚、カウンタ２２１が出力する計時値２２１１は、ＴＯ１においては未だ「０」である。
【０１２３】
Ｔ０１において、更に、選出リクエスト情報生成部２４０は、カウンタ２２１−２２３から受け取った計時値２２１１−２２３３及びリクエスト情報格納部２１０から受け取った送信待ち状態信号２１１４−２１３４に基づいて、リクエスト情報格納部２１０から受け取った格納リクエスト識別子２１１１−２１３３から格納リクエスト識別子２１２２を選択し、選出リクエスト情報２４１として出力する（状態Ｐ２４１が、「ＳＲＱ２」）。
【０１２４】
ここで、選出リクエスト情報生成部２４０の動作を、計時値２２１１−計時値２２３３それぞれは、８ビットの値であるとして具体的に説明する。
【０１２５】
比較器２３１において、比較値Ｂは、送信待ち状態信号２１２４（「１」）に対応する値の「１」と、計時値２２２２（「００００００００」）とをビット単位で合成した値（「１００００００００」）である。また、比較値Ａは、送信待ち状態信号２１１４（「０」）に対応する値の「０」と、計時値２２１１（「００００００００」）とをビット単位で合成した値（「０００００００００」）である。従って、比較器２３１は、「１」を出力する。
【０１２６】
また、比較器２３２において、比較値Ｃは、送信待ち状態信号２１３４（「１」）に対応する値の「１」と、計時値２２３３（「００００００００」）とをビット単位で合成した値（「１００００００００」）である。また、比較値Ｂは、送信待ち状態信号２１２４（「１」）に対応するの「１」値と、計時値２２２２（「００００００００」）とをビット単位（「１００００００００」）で合成した値である。従って、比較器２３２は、「０」を出力する。
【０１２７】
また、比較器２３３において、比較値Ｃは、送信待ち状態信号２１３４（「１」）に対応する値の「１」と、計時値２２３３（「００００００００」）とをビット単位で合成した値（「１００００００００」）である。また、比較値Ａは、送信待ち状態信号２１１４（「０」）に対応する値の「０」と、計時値２２１１（「００００００００」）とをビット単位で合成した値（「０００００００００」）である。従って、比較器２３３は、「１」を出力する。
【０１２８】
比較器２３１、比較器２３２及び比較器２３３の出力に基づいて、否定論理積素子２４４及び否定論理積素子２４５それぞれは、「１」及び「０」を出力する。
【０１２９】
この場合、選択器２４６は、格納リクエスト識別子２１２２を選択し、選出リクエスト情報２４１として出力する。
【０１３０】
次に、Ｔ０２においても、同様な動作により、リクエスト送信部１５０は、ＲＱ２を送信する（状態Ｐ１５０が「ＴＲＱ２」）。また、選択器２４６は、格納リクエスト識別子２１３３を選択し、選出リクエスト情報２４１として出力する（状態Ｐ２４１が、「ＳＲＱ３」）。
【０１３１】
次に、Ｔ０３においても、同様な動作により、リクエスト送信部１５０は、ＲＱ３を送信する（状態Ｐ１５０が「ＴＲＱ３」）。また、選択器２４６は、格納リクエスト識別子２１１１を選択し、選出リクエスト情報２４１として出力する。但し、次のＴ０４において、リクエスト格納部１１０が、空であるため、リクエスト送信部１５０は、リクエストを送信しない。
【０１３２】
尚、カウンタ２２２はＴ０２において、及びカウンタ２２３はＴ０３において、「０」から「１」に変化した計時信号２１２５を受け取ったことに基づいて、カウント値を初期化し、計時を開始する。カウンタ２２１、カウンタ２２２及びカウンタ２２３それぞれのカウント値の出力である計時値２２１１、計時値２２２２及び計時値２２３３は、例えば、Ｔ０５において、「４」、「３」及び「２」である。
【０１３３】
Ｔ１０、Ｔ２０及びＴ３０において、リクエスト発行部４１１は、リトライ処理として、リクエスト１１１を送信する。
【０１３４】
送信権調停装置２０は、これらに基づいて、Ｔ１１、Ｔ２１及びＴ３１それぞれにおいて、ＲＱ１を送信する。同時に、送信権調停装置２０は、カウンタ２２１を初期化し、計時を開始する。
【０１３５】
Ｔ２２において、リクエスト発行部４１１は、リトライ処理として、リクエスト１２１を発行する。
【０１３６】
送信権調停装置２０は、これらに基づいて、Ｔ２３において、ＲＱ２を送信する。同時に、送信権調停装置２０は、カウンタ２２２を初期化し、計時を開始する。
【０１３７】
Ｔ４０において、リクエスト発行部４１１は、リトライ処理として、リクエスト１１１、リクエスト１２１及びリクエスト１３１を発行する。
【０１３８】
これらを受けて、リクエスト格納部１１０−１３０それぞれは、ＲＱ１、ＲＱ２及びＲＱ３を格納する。同時に、リクエスト格納部１１０−１３０それぞれは、格納リクエスト情報１１２−１３２を出力する。
【０１３９】
Ｔ４０において、更に、リクエスト情報格納部２１０は、受け取った格納リクエスト情報１１２−１３２に基づいて、リクエスト情報レジスタ２１１−２１３それぞれに、ＲＱ１、Ｑ２及びＲＱ３のリクエスト識別子を格納する。
【０１４０】
同時に、リクエスト情報格納部２１０は、リクエスト情報レジスタ２１１−２１３それぞれの送信待ちフラグを「１」にセットする。更に、リクエスト情報格納部２１０は、リクエスト情報レジスタ２１１−２１３それぞれの計時フラグを「０」にセットする。
【０１４１】
尚、上述の状態において、カウンタ２２１−２２３が出力する計時値２２１１−２２３３それぞれは、「９」、「１７」及び「３７」である。
【０１４２】
Ｔ４０において、更に、選出リクエスト情報生成部２４０は、カウンタ２２１−２２３から受け取った計時値２２１１−２２３３及びリクエスト情報格納部２１０から受け取った送信待ち状態信号２１１４−２１３４に基づいて、リクエスト情報格納部２１０から受け取った格納リクエスト識別子２１１１−２１３３から格納リクエスト識別子２１３３を選択し、選出リクエスト情報２４１として出力する（状態Ｐ２４１が、「ＳＲＱ３」）。
【０１４３】
次に、Ｔ４１において、上述と同様な動作により、リクエスト送信部１５０は、ＲＱ３を送信する（状態Ｐ１５０が「ＴＲＱ３」）。また、選択器２４６は、格納リクエスト識別子２１２２を選択し、選出リクエスト情報２４１として出力する（状態Ｐ２４１が、「ＳＲＱ２」）。
【０１４４】
次に、Ｔ４２において、同様な動作により、リクエスト送信部１５０は、ＲＱ２を送信する（状態Ｐ１５０が「ＴＲＱ２」）。また、選択器２４６は、格納リクエスト識別子２１１１を選択し、選出リクエスト情報２４１として出力する（状態Ｐ２４１が、「ＳＲＱ１」）。
【０１４５】
次に、Ｔ４３において、同様な動作により、リクエスト送信部１５０は、ＲＱ１を送信する（状態Ｐ１５０が「ＴＲＱ１」）。
【０１４６】
Ｔ４５において、リクエスト発行部４１１は、スレーブユニット４２０におけるＲＱ３の処理が完了したことを通知する、完了リクエスト情報４０１を出力する（状態Ｐ４０１が「ＣＲＱ３」）。
【０１４７】
次に、Ｔ４６において、リクエスト情報格納部２１０は、リクエスト情報レジスタ２１３を空にする（状態Ｐ２１３及び状態Ｐ２１３５が「０」）。
【０１４８】
以上が、本実施形態の動作の説明である。
【０１４９】
尚、選出リクエスト情報生成部２４０は、上述の構成に係わらず、計時値（リトライ処理の待ち時間）が最大のリクエスト識別子を選出し、出力するように構成されてよい。
【０１５０】
また、リクエスト選出部２０１は、上述の構成に係わらず、送信待ち状態であって、計時値が最大のリクエスト識別子を選出するように構成されてよい。
【０１５１】
上述した本実施形態における効果は、第１の実施形態の効果に加え、リクエストの送信権調停処理をより高速に実行することを可能にする点である。
【０１５２】
その理由は、選出リクエスト情報生成部２４０をハードウェア回路で構成したからである。
【０１５３】
［第３の実施形態］
次に、本発明の第３の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
【０１５４】
本実施形態は、第１の実施形態に比べて、計時値５１５を「０」でクリアすることに替えて、計時値５１５をリクエスト送信先に対応する初期値に設定する点が異なる。
【０１５５】
図１６は、計時初期値テーブル５３０の例を示す図である。図１６に示すように、計時初期値テーブル５３０は、リクエスト送信先識別子５０２と計時初期値５３２との組を、１以上含む。
【０１５６】
図４のＳ６０６において、リクエスト送信制御部１００は、受信したリクエスト５００からリクエスト識別子５０１及びリクエスト送信先識別子５０２を抽出する。続けて、リクエスト送信制御部１００は、抽出したリクエスト識別子５０１及びリクエスト送信先識別子５０２を含むリクエスト情報を、リクエスト選出部２００に出力する。
【０１５７】
図４のＳ６０８において、リクエスト選出部２００は、受け取ったリクエスト情報に基づいて、リクエスト情報テーブル５１０を更新する。
【０１５８】
ここで、リクエスト選出部２００は、計時初期値テーブル５３０を参照し、受け取ったリクエスト情報に含まれるリクエスト送信先識別子５０２に対応する、計時初期値５３２を取得する。続けて、リクエスト選出部２００は、取得した計時初期値５３２に基づいて計時値５１５を設定する。
【０１５９】
尚、本実施形態は、以下のように第２の実施形態を基にしてもよい。
【０１６０】
図１７は、本実施形態に係る送信権調停装置２０のリクエスト選出部３０１の一部の構成を示すブロック図である。
【０１６１】
図１７を参照すると、本実施形態のリクエスト選出部３０１は、初期値格納手段３５１を更に含む。また、本実施形態のリクエスト選出部３０１は、リクエスト情報レジスタ２１１、リクエスト情報レジスタ２１２及びリクエスト情報レジスタ２１３に替えてリクエスト情報レジスタ３３１、リクエスト情報レジスタ３３２及びリクエスト情報レジスタ３３３を含む。以後、リクエスト情報レジスタ３３１、リクエスト情報レジスタ３３２及びリクエスト情報レジスタ３３３を総称する場合、リクエスト情報レジスタ３３１−３３３と記載する。
【０１６２】
図１８は、リクエスト情報レジスタ３３１の一例を示す図である。図１８に示すように、リクエスト情報レジスタ３３１は、リクエスト識別子とリクエスト先識別子と送信待ちフラグと計時フラグとを格納する。尚、リクエスト情報レジスタ３３２及びリクエスト情報レジスタ３３３は、リクエスト情報レジスタ３３１と同様である。
【０１６３】
また、リクエスト情報レジスタ３３１−３３３それぞれは、計時信号２１１５−２１２５の出力を「０」から「１」に変更するとき、同時に、初期値格納手段３５１にリクエスト先識別子を出力する。
【０１６４】
初期値格納手段３５１は、受け取ったリクエスト先識別子に対応する計時初期値を、カウンタ２２１-２２３に出力する。
【０１６５】
カウンタ２２１-２２３それぞれは、計時信号２１１５−２１２５が「０」から「１」に変化した場合、受け取った計時初期値をカウンタ値として設定する。
【０１６６】
こうして、本実施形態では各計時値の初期値を、リクエストの行き先に対応して設定可能としている。従って、本実施形態では、リクエストの行き先に基づいて、リクエストの発行調停での優先順位を制御することが可能になる。
【０１６７】
例えば、マスターユニット４１０におけるプログラムの特性により、リクエストの発行先（スレーブユニット４２０）が偏る場合が存在する。例えば、あるスレーブユニット４２０に多くのリクエストが集中するようなプログラムにおいては、リトライが発生した場合にそのスレーブユニット４２０行きのリクエストの送信を優先することで、全リクエストの処理時間が短縮可能となる。
【０１６８】
尚、計時初期値テーブル５３０及び初期値格納手段３５１の内容は、例えば、図示しない手段により、ユーザが予め設定する。また、計時初期値テーブル５３０及び初期値格納手段３５１の内容は、マスターユニット４１０の図示しない手段が、運用形態に応じて、送信権調停装置１０に設定するようにしてもよい。
【０１６９】
上述した本実施形態における第１の効果は、第１の実施形態或いは第２の実施形態の効果に加え、リクエスト選出部２００が選出するリクエスト識別子の選出優先度を、そのリクエスト識別子で特定されるリクエストの送信先に応じて、調整することを可能にする点である。
【０１７０】
その理由は、計時初期値テーブル５３０を含み、リクエスト選出部２００は、計時初期値テーブル５３０を参照し、リクエスト送信先識別子５０２に対応する、計時初期値５３２計時初期値５３２に基づいて計時値５１５を設定するようにしたからである。
【０１７１】
上述した本実施形態における第２の効果は、ユーザによる送信権調停処理のチューンナップが可能になる点である。
【０１７２】
その理由は、計時初期値テーブル５３０を、ユーザが予め設定するようにしたからである。
【０１７３】
以上、各実施形態及び実施例を参照して本発明を説明したが、本発明は上記実施形態及び実施例に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しえるさまざまな変更をすることができる。
【０１７４】
以上の各実施形態で説明した各構成要素は、必ずしも個々に独立した存在である必要はない。例えば、各構成要素は、複数の構成要素が１個のモジュールとして実現されたり、１つの構成要素が複数のモジュールで実現されたりしてもよい。また、各構成要素は、ある構成要素が他の構成要素の一部であったり、ある構成要素の一部と他の構成要素の一部とが重複していたり、といったような構成であってもよい。
【０１７５】
以上説明した各実施形態における各構成要素及び各構成要素を実現するモジュールは、必要に応じ可能であれば、ハードウェア的に実現されても良いし、コンピュータ及びプログラムで実現されても良いし、ハードウェア的なモジュールとコンピュータ及びプログラムとの混在により実現されても良い。プログラムは、磁気ディスクや半導体メモリなど、不揮発性のコンピュータ可読記録媒体に記録されて提供され、コンピュータの立ち上げ時などにコンピュータに読み取られる。この読み取られたプログラムは、そのコンピュータの動作を制御することにより、そのコンピュータを前述した各実施形態における構成要素として機能させる。
【０１７６】
また、以上説明した各実施形態では、複数の動作をフローチャートの形式で順番に記載してあるが、その記載の順番は複数の動作を実行する順番を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の順番は内容的に支障しない範囲で変更することができる。
【０１７７】
更に、以上説明した各実施形態では、複数の動作は個々に相違するタイミングで実行されることに限定されない。例えば、ある動作の実行中に他の動作が発生したり、ある動作と他の動作との実行タイミングが部分的に乃至全部において重複していたりしていてもよい。
【０１７８】
更に、以上説明した各実施形態では、ある動作が他の動作の契機になるように記載しているが、その記載はある動作と他の動作の全ての関係を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の関係は内容的に支障のない範囲で変更することができる。また各構成要素の各動作の具体的な記載は、各構成要素の各動作を限定するものではない。このため、各構成要素の具体的な各動作は、各実施形態を実施する上で機能的、性能的、その他の特性に対して支障をきたさない範囲内で変更されて良い。
【符号の説明】
【０１７９】
１０    送信権調停装置
２０    送信権調停装置
１００    リクエスト送信制御部
１０１    リクエスト送信制御部
１１０    リクエスト格納部
１１１    リクエスト
１１２    格納リクエスト情報
１２０    リクエスト格納部
１２１    リクエスト
１２２    格納リクエスト情報
１３０    リクエスト格納部
１３１    リクエスト
１３２    格納リクエスト情報
１５０    リクエスト送信部
１５１    リクエスト送信情報
２００    リクエスト選出部
２０１    リクエスト選出部
２１０    リクエスト情報格納部
２１１    リクエスト情報レジスタ
２１２    リクエスト情報レジスタ
２１３    リクエスト情報レジスタ
２２０    リトライ処理時間算出部
２２１    カウンタ
２２２    カウンタ
２２３    カウンタ
２３１    比較器
２３２    比較器
２３３    比較器
２４０    選出リクエスト情報生成部
２４１    選出リクエスト情報
２４２    否定論理素子
２４３    否定論理積素子
２４４    否定論理積素子
２４５    否定論理積素子
２４６    選択器
３０１    リクエスト選出部
３３１    リクエスト情報レジスタ
３３２    リクエスト情報レジスタ
３３３    リクエスト情報レジスタ
３５１    初期値格納手段
４００    バスインタフェース
４０１    完了リクエスト情報
４１０    マスターユニット
４１１    リクエスト発行部
４１２    バスインタフェース制御部
４２０    スレーブユニット
４２１    リクエスト実行部
４２２    バスインタフェース制御部
５００    リクエスト
５０１    リクエスト識別子
５０２    リクエスト送信先識別子
５０３    リクエスト内容
５１０    リクエスト情報テーブル
５１４    フラグ
５１５    計時値
５３０    計時初期値テーブル
５３２    計時初期値
１０７０    ＣＰＵ
１０７１    記憶部
１０７２    記憶装置
１０７５    通信部
２１１１    格納リクエスト識別子
２１１４    状態信号
２１１５    計時信号
２１２２    格納リクエスト識別子
２１３３    格納リクエスト識別子
２１２４    状態信号
２１２５    計時信号
２１３４    状態信号
２１３５    計時信号
２２１１    計時値
２２２２    計時値
２２３３    計時値
【図１】
0006034008.tif 000002
【図２】
0006034008.tif 000003
【図３】
0006034008.tif 000004
【図４】
0006034008.tif 000005
【図５】
0006034008.tif 000006
【図６】
0006034008.tif 000007
【図７】
0006034008.tif 000008
【図８】
0006034008.tif 000009
【図９】
0006034008.tif 000010
【図１０】
0006034008.tif 000011
【図１１】
0006034008.tif 000012
【図１２】
0006034008.tif 000013
【図１３】
0006034008.tif 000014
【図１４】
0006034008.tif 000015
【図１５】
0006034008.tif 000016
【図１６】
0006034008.tif 000017
【図１７】
0006034008.tif 000018
【図１８】
0006034008.tif 000019