(57)【要約】  ＢｕｓＩＦ（１０）は、データを一時的に記憶する回避用バッファ（２１）を有する。そして、ＢｕｓＩＦ（１０）は、システムコントローラ（３０）からリード要求を受信した場合には、レジスタ群（２５）からリード要求の対象となるデータを取得する。ここで、ＢｕｓＩＦ（１０）は、リード要求を受信してから所定の時間が経過する前にデータを取得できなかった場合には、システムコントローラ（３０）にデータの送信に失敗した旨を通知し、その後取得したデータを回避用バッファ（２１）に格納する。その後、ＢｕｓＩＦ（１０）は、送信に失敗したデータに対するリード要求のリトライを受信してから所定の時間が経過する前に、再度データを取得できなかった場合には、回避用バッファ（２１）に格納されたデータをシステムコントローラ（３０）へ送信する。
2012093475.tif 000002
【特許請求の範囲】
【請求項１】
送信対象となる情報を一時的に記憶する記憶部と、
記憶装置に格納された情報に対する送信要求を情報処理装置から受信した場合には、当該送信要求の対象となる情報を該記憶装置から取得する取得部と、
前記送信要求を受信してから所定の時間が経過するまでの間に前記取得部が前記記憶装置から前記情報を取得した場合には、当該取得した情報を前記情報処理装置へ送信し、前記送信要求を受信してから所定の時間が経過するまでの間に前記取得部が前記記憶装置から前記情報を取得できなかった場合には、情報を取得できない旨の通知を前記情報処理装置へ送信する送信部と、
前記送信要求を受信してから所定の時間が経過するまでの間に、前記取得部が前記記憶装置から前記情報を取得できなかった場合には、当該所定の時間が経過した後に前記取得部が取得した情報を前記記憶部に格納する格納部と、
を備え、
前記取得部はさらに、前記所定の時間が経過するまでの間に情報が取得できなかった場合には、当該情報の取得を前記所定の時間が経過した後も継続するとともに、所定の時間が経過するまでの間に取得できなかった情報に対する再度の送信要求である再送信要求を情報処理装置から受信した場合には、当該送信要求の対象となる情報を前記記憶装置から取得し、
前記送信部はさらに、前記再送信要求を受信してから所定の時間が経過するまでの間に前記取得部が再度要求された情報を記憶装置から取得した場合には、当該取得された情報を前記情報処理装置に送信し、前記再送信要求を受信してから所定の時間が経過するまでの間に前記取得部が再度要求された情報を前記記憶装置から取得できない場合には、前記格納部が前記記憶部に格納した情報を前記情報処理装置に送信する
ことを特徴とする情報転送装置。
【請求項２】
前記取得部は、前記情報処理装置から情報の送信要求を受信した場合、当該情報が格納されたメモリアドレスと、前回受信した送信要求によって要求された情報が格納されたメモリアドレスとが一致するか否かを判別し、一致すると判別した場合には、取得できなかった情報に対する前記再送信要求を受信したと判別することを特徴とする請求項１に記載の情報転送装置。
【請求項３】
前記記憶部は、自装置に情報が格納されているか否かを示すフラグ情報を有し、
前記格納部は、前記所定の時間が経過した後に前記取得部が取得した情報を前記記憶部に格納した場合には、当該記憶部に情報が格納されていることを示すように前記フラグ情報を設定し、
前記送信部は、前記再送信要求を受信してから所定の時間が経過するまでの間に再度要求された情報を前記取得部が記憶装置から取得できなかった場合には、前記記憶部が有するフラグ情報を確認し、当該フラグ情報が前記記憶部に情報が格納されていることを示す場合には、当該記憶部に格納された情報を前記情報処理装置に送信することを特徴とする請求項１又は２に記載の情報転送装置。
【請求項４】
前記送信部は、前記再送信要求を受信してから所定の時間が経過するまでの間に再度要求された情報を前記取得部が記憶装置から取得した場合には、当該取得された情報を前記情報処理装置に送信するとともに、前記記憶部に情報が格納されていないことを示すフラグ情報を設定することを特徴とする請求項３に記載の情報転送装置。
【請求項５】
前記送信部と前記情報処理装置とは、前記取得部と前記記憶装置との間の通信速度よりも低速の通信速度で情報を送受信するバスで接続されることを特徴とする請求項３に記載の情報転送装置。
【請求項６】
情報を転送する情報転送装置によって実行される情報転送方法であって、
記憶装置に格納された情報に対する送信要求を情報処理装置から受信した場合には、当該送信要求の対象となる情報を該記憶装置から取得し、
前記送信要求を受信してから所定の時間が経過するまでの間に前記記憶装置から前記情報を取得した場合には、当該取得した情報を前記情報処理装置へ送信し、前記送信要求を受信してから所定の時間が経過するまでの間に前記記憶装置から前記情報を取得できなかった場合には、情報を取得できない旨の通知を前記情報処理装置へ送信し、
前記送信要求を受信してから所定の時間が経過するまでの間に前記記憶装置から前記情報を取得できなかった場合には、情報を一時的に記憶する一時記憶装置に、該所定の時間が経過した後に取得した情報を格納し、
さらに、前記所定の時間が経過するまでの間に情報が取得できなかった場合には、当該情報の取得を前記所定の時間が経過した後も継続するとともに、所定の時間が経過するまでの間に取得できなかった情報に対する再度の送信要求である再送信要求を情報処理装置から受信した場合には、当該送信要求の対象となる情報を前記記憶装置から取得し、
さらに、前記再送信要求を受信してから所定の時間が経過するまでの間に再度要求された情報を記憶装置から取得した場合には、当該取得された情報を前記情報処理装置に送信し、前記再送信要求を受信してから所定の時間が経過するまでの間に前記取得部が再度要求された情報を前記記憶装置から取得できない場合には、前記一時記憶装置に格納した情報を前記情報処理装置に送信することを特徴とする情報転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報転送装置および情報転送装置の情報転送方法に関する。
【背景技術】
【０００２】
従来、情報の送信要求を受信すると、要求された情報を記憶装置から取得し、取得した情報を送信する情報転送装置が知られている。このような情報転送装置の一例として、システムコントローラ等から情報の送信要求を受信すると、要求された情報をレジスタから取得し、取得した情報をシステムコントローラ等へ送信するＢｕｓＩＦ（Ｂｕｓ  Ｉｎｔｅｒｆａｃｅ）が知られている。【０００３】
以下、この様なＢｕｓＩＦの一例として、送信要求の対象となる情報が格納されたレジスタ群を有するＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）に設置されたＢｕｓＩＦについて説明する。【０００４】
図１５は、ＢｕｓＩＦを有するＬＳＩを説明するための図である。図１５に示すＬＳＩ５０は、スリーステートバッファ５１、ＢｕｓＩＦ５２、ルーター５３、レジスタ群５４を有し、システムコントローラ６０、複数のＣＰＵ５５〜５８と接続されている。【０００５】
ＢｕｓＩＦ５２は、システムコントローラ６０から、スリーステート・バッファ５１を介して送信要求を受信した場合には、要求された情報の取得をルータ５３に要求する。すると、ルータ５３は、情報の取得を要求された場合には、レジスタ群５４から要求された情報を取得し、取得した情報をＢｕｓＩＦ５２に送信する。そして、ＢｕｓＩＦ５２は、ルータ５３から情報を受信した場合には、受信した情報をシステムコントローラ６０へ送信する。【０００６】
このようなＢｕｓＩＦ５２は、システムコントローラ６０から送信要求を受信してから情報を送信するまでの時間があらかじめ定められている。しかし、ルータ５３は、ＢｕｓＩＦ５２だけではなく、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｃｅｓｉｎｇ  Ｕｎｉｔ）５５〜５８からも、送信要求を同時期に受信する場合がある。このような場合には、ルータ５３で送信要求の競合が発生してしまうため、ＢｕｓＩＦ５２は、送信要求を受信してから所定の時間が経過するまでの間に要求された情報を送信することができない。【０００７】
このため、失敗した情報に対する再度の送信要求に前回の送信要求よりも高い優先度を設定することで、競合が発生した場合にも情報を取得することができる技術が知られている。以下、図１６を用いて競合が発生した場合にも情報を取得することができる技術について説明する。図１６は、再度の送信要求を優先的に処理するＬＳＩを説明するための図である。【０００８】
図１６に示す例では、ＬＳＩ５０は、システムコントローラ６０から送信要求を受信するとともに（ステップＳ１）、ＣＰＵ５５からも送信要求を受信する（ステップＳ２）。すると、ＬＳＩ５０は、受信した送信要求が競合するため、所定の時間内に情報をシステムコントローラ６０へ送信することができない。このため、ＬＳＩ５０は、情報の送信が失敗した旨をシステムコントローラ６０に通知する（ステップＳ３）。【０００９】
このような場合には、システムコントローラ６０は、ステップＳ１にて送信した送信要求よりも高い優先度を設定した送信要求をＬＳＩ５０に送信する（ステップＳ４）。またＬＳＩ５０は、システムコントローラ６０から再度の送信要求を受信するのと同時期に、ＣＰＵ５６からも通常の送信要求を受信する（ステップＳ５）。【００１０】
このような場合には、ＬＳＩ５０は、システムコントローラ６０から受信した送信要求にＣＰＵ５６から受信した送信要求よりも高い優先度が設定されているため、システムコントローラ６０から受信した送信要求を実行する。その後、ＬＳＩ５０は、要求された情報をシステムコントローラ６０へ送信する（ステップＳ６）。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００５−１９６８０８号公報
【特許文献２】特開２００６−３４３９１６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、上述した送信要求に前回の送信要求よりも高い優先度を設定する技術では、再度送信した送信要求よりも高い優先度が設定された送信要求をＬＳＩが受信した場合には、優先負けが再度発生し、情報の送信が失敗してしまうという問題があった。【００１３】
図１７は、情報の送信が再度失敗してしまう状態を説明するための図である。図１７に示すように、ＬＳＩ５０は、システムコントローラ６０およびＣＰＵ５５から情報の転送要求を取得する（ステップＳ７、ステップＳ８）。すると、ＬＳＩ５０は、転送要求の競合が発生するため、システムコントローラ６０に対して所定の時間内に情報を送信することができず、情報の送信が失敗した旨をシステムコントローラ６０に通知する（ステップＳ９）。【００１４】
このため、システムコントローラ６０は、前回の送信要求よりも高い優先度を設定した送信要求をＬＳＩ５０に送信する（ステップＳ１０）。しかし、ＬＳＩ５０は、システムコントローラ６０から受信した送信要求よりも高い優先度が設定された送信要求をＣＰＵ５６から受信した場合には（ステップＳ１１）、再度の競合負けが発生してしまう。この結果、ＬＳＩ５０は、所定の時間内に情報をシステムコントローラ６０に送信できず、再度、情報の送信が失敗した旨をシステムコントローラ６０に通知してしまう（ステップＳ１２）。【００１５】
また、ＬＳＩの優先制御が単純であった場合には、システムコントローラ６０やＣＰＵ５５〜５８が送信要求の優先度を上げ続ける結果、各送信要求の競合負けが連続し、ライブロックが発生する場合がある。また、情報の送信要求を取得するポート数が多い場合には、取得した各要求の優先順位を判断するための回路が複雑となり、回路規模が大きくなってしまう。【００１６】
開示の技術は、上述した問題に鑑みてなされたものであって、再度の送信要求に対して確実に応答する。
【課題を解決するための手段】
【００１７】
開示の技術は、一つの側面では、情報の送信要求を受信してから所定の時間が経過するまでの間に送信要求の対象となる情報を取得することができない場合には、その後取得した送信要求の対象となる情報を一時的に記憶する記憶部を有する情報転送装置である。また情報転送装置は、送信が失敗した情報に対する再度の送信要求を受信し、かつ、所定の時間が経過する前に送信要求の対象となる情報を再度取得できなかった場合には、記憶部に格納した情報を送信する。
【発明の効果】
【００１８】
本願に開示の技術は、一つの側面では、再度の送信要求に対して確実に応答する。
【図面の簡単な説明】
【００１９】
【図１】図１は、実施例１に係るＬＳＩを説明するための図である。
【図２】図２は、実施例１に係るＬＳＩが有する各部を説明するための図である。
【図３】図３は、実施例１に係るリクエスト管理部１１の一例を説明するための図である。
【図４】図４は、リード要求のタイムアウトについて説明するための図である。
【図５】図５は、バッファを一つだけ有するＢｕｓＩＦがデータを送信する処理について説明するための図である。
【図６】図６は、ＬＳＩがリード要求に対してデータを送信する処理の流れを説明するための図である。
【図７】図７は、ＬＳＩがリトライに対してデータを送信する処理の流れを説明するための図である。
【図８】図８は、従来のＬＳＩと実施例１のＬＳＩとを比較するための図である。
【図９】図９は、バスの利用率を説明するための図である。
【図１０】図１０は、優先度が設定されたリード要求を処理するルータを説明するための図である。
【図１１】図１１は、実施例１に係るルータを説明するための図である。
【図１２】図１２は、ＬＳＩ１が実行する処理の流れを説明するためのフローチャートである。
【図１３】図１３は、データの送信が失敗した際の処理の流れを説明するための図である。
【図１４】図１４は、リトライを実行する際の処理の流れを説明するための図である。
【図１５】図１５は、ＢｕｓＩＦを有するＬＳＩを説明するための図である。
【図１６】図１６は、再度の送信要求を優先的に処理するＬＳＩを説明するための図である。
【図１７】図１７は、情報の送信が再度失敗してしまう状態を説明するための図である。
【発明を実施するための形態】
【００２０】
以下に添付図面を参照して本願に係る情報転送装置および情報転送装置の情報転送方法について説明する。
【実施例１】
【００２１】
以下の実施例１では、複数の図を用いて、情報転送装置が設置されたＬＳＩの一例を説明する。図１は、実施例１に係るＬＳＩを説明するための図である。図１に示すように、複数のＬＳＩ１〜３はシステムコントローラ３０とシステムバスで接続されている。ＬＳＩ２〜３は、ＬＳＩ１と同様の構成を有するＬＳＩである。また、後述するように、各ＬＳＩ１〜３は、情報が格納されたレジスタ群を有する。【００２２】
システムコントローラ３０は、各ＬＳＩ１〜３と双方向のシステムバスで接続され、各ＬＳＩ１〜３のレジスタに記憶された情報に対するリード要求を各ＬＳＩ１〜３に送信する。そして、システムコントローラ３０は、各ＬＳＩ１〜３からリード要求に対する応答を受信する。【００２３】
ここで、後述するように、各ＬＳＩ１〜３は、システムコントローラ３０からリード要求を受信してから所定の時間が経過するまでの間に、リード要求の対象となる情報をシステムコントローラ３０に送信できない場合には、送信に失敗した旨の通知を送信する。このような場合には、システムコントローラ３０は、送信に失敗したデータに対するリード要求のリトライを送信する。【００２４】
ＬＳＩ１は、情報を記憶するレジスタを有し、システムコントローラ３０から受信したリード要求に対する処理を実行する。以下、図２を用いて、ＬＳＩ１について詳しく説明する。【００２５】
図２は、実施例１に係るＬＳＩが有する各部を説明するための図である。図２に示す例では、ＬＳＩ１は、スリーステートバッファ４、ＢｕｓＩＦ１０、ルーター２３、レジスタ群２５を有する。また、ＢｕｓＩＦ１０は、リクエスト管理部１１、制御部１５、レスポンス管理部１９を有する。【００２６】
また、リクエスト管理部１１は、アドレスバッファ１２、コマンドバッファ１３、比較回路１４を有する。また、制御部１５は、ステート管理回路１６、タイムアウト監視回路１７、回避制御回路１８を有する。また、レスポンス管理部１９は、応答回路２０、回避用バッファ２１、通常用バッファ２２を有する。【００２７】
ここで、ルーター２３は、アービタ２４を有し、複数のＣＰＵ４０〜４３と接続され、各ＣＰＵ４０〜４３からレジスタ群２５に記憶された情報に対するリード要求を受信する。なお、レジスタ群２５は、リード要求の対象となるデータが格納された記憶装置である。【００２８】
以下、ＬＳＩ１が有する各部４〜２５について説明する。スリーステートバッファ４は、システムコントローラ３０から情報のリード要求を受信した場合には、受信したリード要求をリクエスト管理部１１と制御部１５とへ送信する。また、スリーステートバッファ４は、後述するレスポンス管理部１９からデータを受信した場合には、受信したデータをシステムコントローラ３０へ送信する。【００２９】
ＢｕｓＩＦ１０は、システムコントローラ３０からリード要求を受信した場合には、リード要求の対象となるデータをレジスタ群２５から取得し、取得したデータをシステムコントローラ３０へ送信する情報転送装置である。以下、ＢｕｓＩＦ１０が有する各部について説明する。【００３０】
リクエスト管理部１１は、システムコントローラ３０からレジスタ群２５に記憶されたデータに対するリード要求を受信した場合には、リード要求の対象となるデータを要求するレジスタ群２５へのリクエストを発行する。【００３１】
具体的には、リクエスト管理部１１は、スリーステートバッファ４からリード要求として、リード要求の対象となるレジスタ群２５のメモリに割当てられたレジスタのアドレスであるメモリアドレスと、データの読込を示すリードコマンドとを受信する。このような場合には、リクエスト管理部１１は、受信したメモリアドレスをアドレスバッファ１２に格納し、受信したリードコマンドをコマンドバッファ１３に格納する。【００３２】
そして、リクエスト管理部１１は、リード要求をルーター２３に送信するタイミングを示すイネーブル信号を後述するステート管理回路１６から受信した場合には、各バッファ１２、１３に格納されたメモリアドレスおよびコマンドをルーター２３へ送信する。【００３３】
また、リスクエスト管理部１１は、後述する比較回路１４を用いて、新たなリード要求を受信した場合には、前回受信したリード要求が処理の対象とするメモリアドレスと新たなリード要求が処理の対象とするメモリアドレスとが一致するか否かを判別する。そして、リクエスト管理部１１は、前回受信したリード要求と新たなリード要求とが処理の対象とするメモリアドレスが一致すると判別した場合には、取得が失敗したデータに対する再度の送信要求を受信した旨を示す信号を回避制御回路１８に送信する。【００３４】
以下、図３を用いて、リクエスト管理部１１の一例について説明する。図３は、実施例１に係るリクエスト管理部１１の一例を説明するための図である。図３に示す例では、リクエスト管理部１１は、シリアル／パラレル変換回路と、アドレスバッファ１２であるイネーブル付Ｄ型フリップフロップと、コマンドバッファ１３であるイネーブル付Ｄ型フリップフロップとを有する。なお、以下の説明では、スリーステートバッファ４がバスを介して１ｂｉｔ単位のシリアル信号をシステムコントローラ３０から受信したものとする。【００３５】
例えば、シリアル／パラレル変換回路は、スリーステートバッファ４からリード要求のシリアル信号を受信した場合には、受信した１ｂｉｔのシリアル信号を８ｂｉｔのパラレル信号に変換する。そして、シリアル／パラレル変換回路は、ステート管理回路１６からシフトイネーブル信号を受信した場合には、変換後の信号をアドレスバッファ１２およびコマンドバッファ１３に送信するとともに、変換後のアドレス信号を比較回路１４へ送信する。【００３６】
アドレスバッファ１２およびコマンドバッファ１３は、それぞれ、ステート管理回路１６から出力されたキャプチャーイネーブル信号をトリガとして、シリアル／パラレル変換回路が出力したパラレル信号を保持する。そして、アドレスバッファ１２およびコマンドバッファ１３は、保持したパラレル信号を図示しないデコーダーに渡す。デコーダーは、受信したパラレル信号からメモリアドレスとコマンドとをデコードし、メモリアドレスとコマンドとをルーター２３へ送信する。【００３７】
比較回路１４は、ステート管理回路１６からイネーブル信号を受信した場合のみ、シリアル／パラレル変換回路から受信した信号と、アドレスバッファ１２から受信した信号とを比較し、各信号が示すメモリアドレスが一致するか否かを判別する。つまり、比較回路１４は、今回受信したリード信号が処理の対象とするメモリアドレスと、前回受信したリード信号が処理の対象とするメモリアドレスとが一致するか否かを判別する。【００３８】
そして、比較回路１４は、各信号が示すメモリアドレスが一致すると判別した場合には、各信号が示すメモリアドレスが一致する事を示す差分検出信号として「０」を示す信号を回避制御回路１８へ送信する。一方、比較回路１４は、各信号が示すメモリアドレスが一致しないと判別した場合には、各信号が示すメモリアドレスが一致しないことを示す差分検出信号として「１」を示す信号を回避制御回路１８へ送信する。【００３９】
図２に戻って、制御部１５が有するステート管理回路１６、タイムアウト監視回路１７、回避制御回路１８が実行する処理について説明する。ステート管理回路１６は、スリーステートバッファ４からデータ受信し、リクエストを解析するステートになった場合に、リクエスト管理部１１のシリアル／パラレル変換回路に対してはシフトイネーブル信号を、アドレスバッファ１２、コマンドバッファ１３、比較回路１４に対してはキャプチャーイネーブル信号を各々送信する。【００４０】
タイムアウト監視回路１７は、スリーステートバッファ４からリード要求を受信した旨を通知された場合には、リード要求を受信してから経過した時間をカウントし、リード要求を受信してから所定の時間が経過したか否かを判別する。そして、タイムアウト監視回路１７は、リード要求を受信してから所定の時間が経過したと判別した場合には、所定の時間が経過した旨を回避制御回路１８に通知する。【００４１】
回避制御回路１８は、レスポンス管理部１９が有する各部２０〜２２を制御し、リード要求に対する応答をシステムコントローラ３０へ送信させる。具体的には、回避制御回路１８は、レジスタ群２５から取得したデータを回避用バッファ２１および通常用バッファ２２に格納する処理と、回避用バッファ２１または通常用バッファ２２に格納されたデータをシステムコントローラ３０へ送信する処理とを実行する。【００４２】
以下、回避制御回路１８が実行する処理のうち、レジスタ群２５から取得したデータを回避用バッファ２１および通常用バッファ２２に格納する処理の流れについて詳しく説明する。まず、回避制御回路１８は、差分検出信号を比較回路１４から受信する。【００４３】
そして、回避制御回路１８は、比較回路１４の差分検出信号が「１」である場合、つまり、前回のリード要求とは異なるメモリアドレスを処理の対象とするリード要求が受信された場合には、後述する回避用バッファ２１が有するロックフラグと後述する通常用バッファ２２が有する送信可能フラグを共に「０」にリセットする。【００４４】
回避制御回路１８はまた、差分が検出されない場合は何もせずに以下の処理を継続する。【００４５】
次に、回避制御回路１８は、リード対象のデータをレスポンス管理部１９が受信した場合には、回避用バッファ２１が空か否かを判別する。具体的には、回避制御回路１８は、回避用バッファ２１が有するロックフラグが「１」であるか否かを判別し、ロックフラグが「０」であると判別した場合には、回避用バッファ２１が空であると判別する。【００４６】
そして、回避制御回路１８は、回避用バッファ２１が空であると判別した場合には、受信したデータを回避用バッファ２１と通常用バッファ２２に格納する。また、回避制御回路１８は、通常用バッファ２２にデータを格納した場合には、送信可能フラグを「１」にセットする。また、回避制御回路１８は、後述する回避用バッファ２１が有するロックフラグを「１」にセットする。【００４７】
また、回避制御回路１８は、回避用バッファ２１が空ではないと判別した場合には、受信したデータを通常用バッファ２２のみに格納するとともに、通常用バッファ２２の送信可能フラグを「１」にセットする。【００４８】
つまり、回避制御回路１８は、回避用バッファ２１が空であると判別した場合には、レスポンス管理部１９が受信したデータを回避用バッファ２１と通常用バッファ２２とに格納する。また、回避制御回路１８は、回避用バッファ２１にデータが格納され、ロックフラグが「１」である場合には、レスポンス管理部１９が受信したデータを通常用バッファ２２のみに格納する。【００４９】
また、回避制御回路１８は、上述したデータを格納する処理については、タイムアウト監視回路１７から所定の時間が経過した旨を通知を取得したか否かにかかわらず実行する。つまり、回避制御回路１８は、リード要求を受信してから所定の時間が経過した際にも、レスポンス管理部１９がレジスタ群２５からデータを取得した場合には、取得したデータを回避用バッファ２１に格納し、回避用バッファ２１のロックフラグを「１」にする。【００５０】
次に、回避制御回路１８が実行する処理のうち、回避用バッファ２１または通常用バッファ２２に格納されたデータをシステムコントローラ３０へ送信する処理について説明する。具体的には、回避制御回路１８は、タイムアウト監視回路１７から所定の時間が経過した旨を通知された場合には、データをシステムコントローラ３０へ送信する処理を開始する。【００５１】
まず、回避制御回路１８は、タイムアウト監視回路１７から所定の時間が経過した旨を通知された場合には、通常用バッファ２２の送信可能フラグが「１」であるか否かを判別する。そして、回避制御回路１８は、通常用バッファ２２の送信可能フラグが「１」であると判別した場合には、通常用バッファ２２に格納されたデータをシステムコントローラ３０へ送信する。また、回避制御回路１８は、通常用バッファ２２に格納されたデータをシステムコントローラ３０へ送信した場合には、回避用バッファ２１が有するロックフラグと通常用バッファ２２が有する送信可能フラグとを「０」にリセットする。【００５２】
一方、回避制御回路１８は、通常用バッファ２２の送信可能フラグが「０」であると判別した場合には、回避用バッファ２１のロックフラグが「１」であるか否かを判別する。そして、回避制御回路１８は、回避用バッファ２１のロックフラグが「０」であると判別した場合には、応答回路２０を制御し、システムコントローラ３０にリードが失敗した旨を通知する。【００５３】
一方、回避制御回路１８は、回避用バッファ２１のロックフラグが「１」であると判別した場合には、応答回路２０を制御し、回避用バッファ２１に格納されたデータをシステムコントローラ３０に送信する。つまり、回避制御回路１８は、通常用バッファ２２の送信可能フラグが「０」であり、回避用バッファ２１のロックフラグが「１」である場合には、回避用バッファ２１に格納されたデータをシステムコントローラ３０に送信する。また、回避制御回路１８は、回避用バッファ２１に格納されたデータをシステムコントローラ３０に送信した場合には、回避用バッファ２１のロックフラグを「０」にセットする。【００５４】
つまり、回避制御回路１８は、タイムアウト監視回路１７から所定の時間が経過した旨を通知される前にリード要求の対象となるデータをレスポンス管理部１９が受信した場合には、通常用バッファ２２に格納されたデータをシステムコントローラ３０へ送信する。また、回避制御回路１８は、タイムアウト監視回路１７から所定の時間が経過した旨を通知される前にリード要求の対象となるデータをレスポンス管理部１９が受信しなかった場合には、システムコントローラ３０にリードが失敗した旨を通知する。【００５５】
また、回避制御回路１８は、上述したように、タイムアウト監視回路１７から所定の時間が経過した旨を通知された後でリード要求の対象となるデータをレスポンス管理部１９が受信した場合には、受信したデータを回避用バッファ２１に格納する。このため、回避用バッファ２１には、失敗したリード要求に対するリトライをシステムコントローラ３０から受信した場合には、前回のリード要求を受信した際に取得したデータがすでに格納されている。【００５６】
そして、回避制御回路１８は、タイムアウト監視回路１７から所定の時間が経過した旨を通知される前にリトライの対象となるデータをレスポンス管理部１９が受信しなかった場合は、回避用バッファ２１に格納されたデータをシステムコントローラ３０に送信する。また、回避制御回路１８は、タイムアウト監視回路１７から所定の時間が経過した旨を通知される前にリトライの対象となるデータをレスポンス管理部１９が受信した場合には、通常用バッファ２２に格納されたデータをシステムコントローラ３０に送信する。このため、ＢｕｓＩＦ１０は、システムコントローラ３０から失敗したリード要求に対するリトライを受信した場合には、確実に応答を返すことができる。【００５７】
ここで、図４を用いて、リード要求のタイムアウトについて説明する。図４は、リード要求のタイムアウトについて説明するための図である。なお、以下の説明では、システムコントローラ３０とＬＳＩ１とがＩ２Ｃ／ＳＭＢｕｓ（Inter-Integrated  Circuit/System  Management  Bus：登録商標）等の低速システムバスによって接続されているものとする。【００５８】
また、図４に示す点線のブロックは、バス上のクロック（外部クロック）単位でのデータを示す。また、図４に示す実線のブロックは、ＬＳＩ１内部のクロック単位のデータを示す。つまり、図４に示す例は、ＬＳＩ１は、バスクロックの５倍のクロック周波数で動作することを示している。【００５９】
このような場合において、ＬＳＩ１およびシステムコントローラ３０は、メモリアドレス、ＡＣＫ、コマンド、ＡＣＫ、データの順でリード要求とリード要求の対象となるデータとを送受信する。このため、図４に示す例では、ＬＳＩ１は、データキャプチャーのタイミングがバスクロックの中心であった場合には、図４中αで示すように、コマンドを受信してから、ＬＳＩ１のクロックで７つ分の期間内にデータを送信可能な状態でなければならない。【００６０】
このため、ＢｕｓＩＦ１０は、リード要求を受信してから所定の時間が経過する前に、レジスタ群２５に格納されたデータを取得できなかった場合には、リード要求がタイムアウトしたものとし、システムコントローラ３０にデータの送信が失敗した旨を通知する。なお、ＢｕｓＩＦ１０が、リードが失敗した旨を通知する方法はＣＲＣ（Cyclic  Redundancy  Check）やＡＣＫ、ステータスビット等のバスの仕様に応じた方法で行える。【００６１】
図２に戻って、レスポンス管理部１９は、システムコントローラ３０へ送信されるデータを一時的に記憶する回避用バッファ２１と通常用バッファ２２とを有する。そして、レスポンス管理部１９は、リード要求を受信してから所定の時間が経過するまでの間にレジスタ群２５からデータを取得した場合には、取得したデータを通常用バッファ２２に格納する。その後、レスポンス管理部１９は、通常用バッファ２２に格納したデータをシステムコントローラ３０へ送信する。【００６２】
一方、レスポンス管理部１９は、リード要求を受信を受信してから所定の時間が経過する前にレジスタ群２５からデータを受信しなかった場合には、スリーステートバッファ４を介して、システムコントローラ３０にリードが失敗した旨を通知する。また、レスポンス管理部１９は、リード要求を受信してから所定の時間が経過した後にレジスタ群２５からデータを受信した場合には、受信したデータを回避用バッファ２１に格納する。そして、レスポンス管理部１９は、リトライを受信してから所定の時間が経過するまでの間にレジスタ群２５に格納されたデータを再度取得できなかった場合には、回避用バッファ２１に格納されたデータをシステムコントローラ３０へ送信する。【００６３】
以下、レスポンス管理部１９が有する各部について説明する。応答回路２０は、回避制御回路１８によって制御され、リード要求を受信してから所定の時間が経過した際にレジスタ群２５からデータを受信した場合には、通常用バッファ２２に格納されたデータをシステムコントローラ３０へ送信する。【００６４】
また応答回路２０は、リード要求を受信してから所定の時間が経過するまでの間にデータをレジスタ群２５から受信しなかった場合には、リードが失敗した旨をシステムコントローラ３０に通知する。また、応答回路２０は、その後レジスタ群２５から受信したデータを回避用バッファ２１に格納する。そして、応答回路２０は、リトライを受信してから所定の時間が経過した際にデータをレジスタ群２５から受信しなかった場合には、回避用バッファ２１に格納されたデータをシステムコントローラ３０へ送信する。【００６５】
回避用バッファ２１および通常用バッファ２２は、システムコントローラ３０へ送信するリードデータを一時的に記憶するバッファである。また、回避用バッファ２１は、ロックフラグを有し、ロックフラグが「１」である場合には、自装置にデータが格納されていることを示し、ロックフラグが「０」である場合には、自装置にデータが格納されていないことを示す。また、通常用バッファ２２に、送信可能フラグを有し、送信可能フラグが「１」である場合には、自装置に格納されたデータを送信することができることを示し、送信可能フラグが「０」である場合には、自装置に格納されたデータが送信できないことを示す。【００６６】
次に、図５を用いて、レスポンス管理部１９が回避用バッファ２１と通常用バッファ２２との２つのバッファを有する意味について説明する。図５は、バッファを一つだけ有するＢｕｓＩＦがデータを送信する処理について説明するための図である。なお、図５中βは、リード要求を受信してから所定の時間が経過したタイミング、つまり、データの送信処理を開始するタイミングを示す。【００６７】
例えば、図５中Ｃａｓｅ１に示すように、バッファを一つだけ有するＢｕｓＩＦでは、データの送信処理を開始する前にデータをバッファに格納し、バッファに格納したデータを送信する。このような場合には、ＢｕｓＩＦは、データをバッファに格納するタイミングとバッファに格納したデータを送信するタイミングとが重複しないので、正しいデータを送信することができる。【００６８】
また、図５中Ｃａｓｅ３に示すように、バッファを一つだけ有するＢｕｓＩＦでは、バッファに格納したデータを送信するタイミングよりも後でデータをバッファに格納した場合には、データを送信することができないが、リトライ時に正しいデータを送信できる。【００６９】
一方、図５中Ｃａｓｅ２に示すように、データをバッファに格納するタイミングと、データの送信処理を開始するタイミングとが重複する場合には、一つのバッファにデータの書込みと読み出しとを同時に行うため、送信するデータが壊れている可能性がある。【００７０】
このような事態を避けるため、データをバッファに格納するタイミングとデータを読み取るタイミングとを重複させない手段を採用することも考えられる。しかし、データの書込みや読取のタイミングを計算する回路を採用した場合には、回路規模が大きくなり、ＢｕｓＩＦの回路が複雑化してしまう。【００７１】
一方、本実施例のＢｕｓＩＦ１０は、回避用バッファ２１と通常用バッファ２２との二つのバッファを有することにより、データをバッファに格納するタイミングとデータの読み取りを行うタイミングの重複を避けている。このため、ＢｕｓＩＦ１０は、回路規模を削減し、また、ＢｕｓＩＦ１０の回路を複雑化させることなく、データとバッファに格納するタイミングとデータの読み取りを行うタイミングとの重複を避けることができる。【００７２】
図２に戻って、ルーター２３は、ＢｕｓＩＦ１０および各ＣＰＵ４０〜４３からリード要求を受信する。そして、ルーター２３は、受信したリード要求が処理の対象とするデータをレジスタ群２５から取得し、リード要求の送信元に取得した情報を送信する。【００７３】
具体的には、ルーター２３は、ＢｕｓＩＦ１０および各ＣＰＵ４０〜４３から、リード要求として、リード要求の対象となるメモリアドレスと、読み取りを示すリードコマンドとを受信する。また、ルーター２３は、アービタ２４を用いて、ＢｕｓＩＦ１０および各ＣＰＵ４０〜４３から受信されたリード要求から実行するリード要求を選択する。【００７４】
そして、ルーター２３は、選択したリード要求の対象となるメモリアドレスに格納されたデータをレジスタ群２５から読出し、読み出したデータを選択したリード要求の送信元へ送信する。【００７５】
次に、図６、７を用いて、ＬＳＩ１がデータをシステムコントローラ３０に送信する処理の流れについて説明する。図６は、ＬＳＩがリード要求に対してデータを送信する処理の流れを説明するための図である。また、図７は、ＬＳＩがリトライに対してデータを送信する処理の流れを説明するための図である。【００７６】
図６に示す例では、システムコントローラ３０は、ＬＳＩ１にリード要求を送信する。このような場合には、ＬＳＩ１は、リード要求をルーター２３に伝達するとともに、受信したリード要求が処理の対象とするメモリアドレスを記憶する。ルーター２３は、システムコントローラ３０が送信したリード要求をアービタ２４が選択した場合には、選択したリード要求を実行し、レジスタ群２５からデータを取得する。そして、ルーター２３は、取得したデータをＢｕｓＩＦ１０へ送信する。【００７７】
ＢｕｓＩＦ１０は、図６中の太線で示すように、リード要求を受信してから所定の時間が経過するまでの間にデータの送信が間に合うか否かを判別する。図６の太線で示す例では、ＢｕｓＩＦ１０は、データの送信が間に合わないと判別し、回避用バッファ２１のロックフラグをチェックして、リード要求の対象となるデータが回避用バッファ２１に格納されているか否かを判別する。【００７８】
すると、ＢｕｓＩＦ１０は、回避用バッファ２１にデータが格納されていないと判別し、データのリードが失敗した旨をシステムコントローラ３０に通知する。また、ＢｕｓＩＦ１０は、所定の時間が経過した後でルーター２３から取得したデータを回避用バッファ２１に格納する。【００７９】
システムコントローラ３０は、ＬＳＩ１からリードが失敗した旨を通知された場合には、図７に示すように、前回送信したリード要求を再度ＬＳＩ１に送信する。すると、ＬＳＩ１は、受信したリード要求を再度ルーター２３に伝達し、レジスタ群２５からデータを取得させる。ここで、ＬＳＩ１は、再度データの送信が間に合うか否かを判別する。【００８０】
図７の太線で示す例では、ＢｕｓＩＦ１０は、再度データの送信が間に合わないと判別し、回避用バッファ２１にリード要求の対象となるデータが回避用バッファ２１に格納されているか否かを判別する。すると、図６の太線で示したように、回避用バッファ２１には、リード要求の対象となるデータが格納されているので、図７の太線で示すように、回避用バッファ２１に格納されたデータをシステムコントローラ３０に送信する。【００８１】
このように、実施例１に係るＢｕｓＩＦ１０は、リード要求を受信してから所定の時間が経過するまでの間に、リード要求の対象となるデータを取得できない場合には、データを回避用バッファ２１に格納する。そして、ＢｕｓＩＦ１０は、同じメモリアドレスに格納されたデータに対するリード要求のリトライを受信した際に、リード要求を受信してから所定の時間が経過するまでの間に再度データが取得できなかった場合には、回避用バッファ２１に格納されたデータを送信する。【００８２】
このため、ＢｕｓＩＦ１０を有するＬＳＩ１は、データの送信に失敗したリード要求のリトライに対して、２回以内に確実に応答することができる。結果として、ＬＳＩ１は、ＬＳＩ１にて競合が発生する場合にも、ライブロックを起こさずに、リード要求に応答することができる。【００８３】
なお、リトライに対するデータの送信が再度失敗した際に送信されるデータ、つまり回避用バッファ２１に格納されたデータは、厳密には、システムコントローラ３０がリード要求したデータとは時間的な誤差が存在する。【００８４】
しかし、システムコントローラ３０とＬＳＩ１とを接続するバスがＬＳＩ１の内部クロックよりも遅い為、一般に、厳密なタイミングでのデータ取得ができないことを前提とした運用がシステムコントローラ３０に適用される。このため、リトライに対するデータと回避用バッファ２１に格納されたデータとを同一とみなし、回避用バッファ２１に格納されたデータをシステムコントローラ３０へ送信しても問題ない。【００８５】
図８は、従来のＬＳＩと実施例１のＬＳＩとを比較するための図である。図８の左側に示すように、従来のＬＳＩでは、ＬＳＩにてリード要求の競合が発生する結果、システムコントローラにリードの失敗が通知され続け、ライブロックとなる場合がある。しかし、ＬＳＩ１は、図８の右側に示すように、リトライに対して確実に応答することができるので、ライブロックを防止することができる。【００８６】
また、ＬＳＩ１は、リトライに対して確実に応答することができるので、システムコントローラ３０とＬＳＩ１と接続するバスの有効率を改善することができる。図９は、バスの利用率を説明するための図である。図９に示す例では、３つのデータに対するリード要求が成功するまでにバスを占有した時間を示す。また、図９中の斜線が引かれたアクセスは、リード要求が失敗したアクセスを示し、斜線が引かれていないアクセスは、リード要求が成功したアクセスを示す。【００８７】
図９に示す例では、従来のＬＳＩは、リトライに対して確実に応答することができないので、１つ目のデータに対するリード要求が成功するまで３回のリトライが実行され、２つ目のデータに対するリード要求が成功するまで２回のリトライが実行されている。一方、ＬＳＩ１は、リトライに対して確実に応答することができるため、３つのデータに対するリード要求が成功するまでのバスの利用時間が短くなる。結果として、ＬＳＩ１は、バスの有効率を改善することができる。【００８８】
また、ＬＳＩ１は、リード要求に優先度を設定せずとも、リトライに対して確実に応答する。このため、ルーター２３の回路を簡素にすることができる結果、回路規模を小規模にすることができる。図１０は、優先度が設定されたリード要求を処理するルータを説明するための図である。図１０に示すように、従来のルータは、システムコントローラ３０や各ＣＰＵ４０〜４３からのリード要求に設定された優先度を確認する回路、過去に実行したリード要求の履歴を確認する回路、ライブロックを防止する回路等を備える。このため、従来のＬＳＩは、回路規模が大きくなるとともに、回路が複雑になるという問題があった。【００８９】
一方、図１１に示すように、ルーター２３は、システムコントローラ３０および各ＣＰＵ４０〜４３から受信したリード要求のうち、実行するリード要求をラウンドロビンで選択するための簡易タイマーを有すればよい。この結果、ＬＳＩ１は、従来と比較して、回路規模を小さくするとともに、簡易な回路で実現することができる。なお、図１１は、実施例１に係るルータを説明するための図である。【００９０】
例えば、ステート管理回路１６、タイムアウト監視回路１７、回避制御回路１８、応答回路２０、ルーター２３、アービタ２４とは、電子回路である。ここで、電子回路の例として、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ  （Field  Programmable  Gate  Array）などの集積回路、またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などを適用する。【００９１】
また、アドレスバッファ１２、コマンドバッファ１３、レジスタ群２５とは、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ  （flash  memory）などの半導体メモリ素子である。【００９２】
[ＬＳＩの処理]
次に、図１２を用いて、ＬＳＩ１の処理の流れを説明する。図１２は、ＬＳＩ１が実行する処理の流れを説明するためのフローチャートである。図１２に示す例では、システムコントローラ３０は、レジスタ群２５に格納されたデータの読み取りを行う処理が発生したことをトリガとして、処理を開始する。【００９３】
まず、システムコントローラ３０は、リード要求をＬＳＩ１に発行する（ステップＳ１０１）。ＢｕｓＩＦ１０は、リード要求を受信すると、リード要求の対象となるメモリアドレスをデコードする（ステップＳ１０２）。また、ＢｕｓＩＦ１０は、ルーター２３が有するアービタ２４へリード要求を発行する（ステップＳ１０３）。また、ＢｕｓＩＦ１０は、リード要求を受信してから経過した時間をカウントする（ステップＳ１０４）。【００９４】
アービタ２４は、ラウンドロビン方式を用いて、リード要求を調停する（ステップＳ１０５）。ここで、アービタ２４は、競合が発生したか否かを判別する（ステップＳ１０６）。そして、アービタ２４は、競合が発生したと判別された場合には（ステップＳ１０６肯定）、システムコントローラ３０から受信したリード要求を待たせる（ステップＳ１０７）。【００９５】
一方、アービタ２４は、競合が発生していないと判別された場合には（ステップＳ１０６否定）レジスタ群２５にアクセスする（ステップＳ１０８）。その後、レジスタ群２５は、ＢｕｓＩＦ１０にデータを返す（ステップＳ１０９）。【００９６】
ここで、ＢｕｓＩＦ１０が有する回避制御回路１８は、ステップＳ１０２にてデコードされたメモリアドレスが前回のリード要求の対象となったメモリアドレスと一致するか否かを判別する（ステップＳ１１０）。そして、回避制御回路１８は、ステップＳ１０２にてデコードされたメモリアドレスが前回のリード要求の対象となったメモリアドレスと一致すると判別した場合には（ステップＳ１１０肯定）、回避用バッファ２１をそのままにする（ステップＳ１１１）。一方、回避制御回路１８は、メモリアドレスが前回のリード要求の対象となったメモリアドレスと一致しないと判別した場合には（ステップＳ１１０否定）、回避用バッファ２１に格納されたデータをクリアする（ステップＳ１１２）。【００９７】
また、回避制御回路１８は、レスポンス管理部１９がデータを受信した場合には（ステップＳ１１３）、回避用バッファ２１が空か否かを判別する（ステップＳ１１４）。そして、回避制御回路１８は、回避用バッファ２１が空であると判別した場合には（ステップＳ１１４肯定）、回避用バッファ２１および通常用バッファ２２にデータを格納する（ステップＳ１１５）。【００９８】
一方、回避制御回路１８は、回避用バッファ２１が空ではないと判別した場合には（ステップＳ１１４否定）、通常用バッファ２２にデータを格納する（ステップＳ１１６）。続いて、回避制御回路１８は、リード要求を受信してから所定の時間が経過した場合には、データの送信処理を開始し、通常用バッファ２２にデータが格納されているか否かを判別する（ステップＳ１１７）。【００９９】
そして、回避制御回路１８は、通常用バッファ２２にデータ格納されていると判別した場合には（ステップＳ１１７肯定）、通常用バッファ２２に格納されたデータをシステムコントローラ３０に送信する（ステップＳ１１８）。また、回避制御回路１８は、通常用バッファ２２に格納されたデータをシステムコントローラ３０に送信した場合には、回避用バッファ２１に格納されたデータをクリアする（ステップＳ１１２）。【０１００】
また、回避制御回路１８は、通常用バッファ２２にデータ格納されていないと判別した場合には（ステップＳ１１７否定）、回避用バッファ２１にデータが格納されているか否かを判別する（ステップＳ１１９）。その後、回避制御回路１８は、回避用バッファ２１にデータが格納されていると判別した場合には（ステップＳ１１９肯定）、回避用バッファに格納されたデータをシステムコントローラ３０に送信する（ステップＳ１２０）。また、回避制御回路１８は、回避用バッファ２１に格納されたデータをシステムコントローラ３０に送信した場合には、回避用バッファ２１に格納されたデータをクリアする（ステップＳ１１２）。【０１０１】
一方、回避制御回路１８は、回避用バッファ２１にデータが格納されてないと判別した場合には（ステップＳ１１９否定）、システムコントローラ３０に対して、データの送信が失敗した旨を通知する（ステップＳ１２１）。また、システムコントローラ３０は、ＢｕｓＩＦ１０からデータを受信した場合には（ステップＳ１２２）、リード要求が成功したか否かを判別する（ステップＳ１２３）。【０１０２】
そして、システムコントローラ３０は、リード要求が成功した場合には（ステップＳ１２３肯定）、処理を終了する。一方、システムコントローラ３０は、リード要求が失敗した場合には（ステップＳ１２３否定）、リード要求のリトライを発行する（ステップＳ１２４）。【０１０３】
次に、図１３を用いて、ＢｕｓＩＦ１０が実行する処理の流れの一例について説明する。図１３は、データの送信が失敗した際の処理の流れを説明するための図である。図１３の太線で示す例では、システムコントローラ３０がリード要求を発行すると（ステップＳ１０１）、ＢｕｓＩＦ１０は、メモリアドレスをデコードし（ステップＳ１０２）、アービタ２４へリード要求を発行する（ステップＳ１０３）。【０１０４】
アービタ２４は、リード要求の調停を行い（ステップＳ１０５）、リード要求の競合が発生していると判別し（ステップＳ１０６肯定）、システムコントローラ３０から受信したリード要求を待たせる（ステップＳ１０７）。その後、アービタ２４は、リード要求の競合が解消したと判別し（ステップＳ１０６否定）、レジスタにアクセスし（ステップＳ１０８）、レジスタ群２５から返されたデータをＢｕｓＩＦ１０へ送信する（ステップＳ１０９）。【０１０５】
ＢｕｓＩＦ１０の回避制御回路１８は、データを受信した場合には（ステップＳ１１３）、回避用バッファ２１が空であると判別し（ステップＳ１１４肯定）、回避用バッファ２１および通常用バッファ２２にデータを格納する（ステップＳ１１５）。ここで、回避制御回路１８は、データの格納に先駆けてデータの送信処理を開始し、通常用バッファ２２にデータが格納されているか否かを判別する（ステップＳ１１７）。【０１０６】
また、回避制御回路１８は、通常用バッファ２２にデータが格納されていないと判別し（ステップＳ１１７否定）、回避用バッファ２１にデータが格納されているか否かを判別する（ステップＳ１１９）。そして、回避制御回路１８は、回避用バッファ２１にもデータが格納されていないと判別し（ステップＳ１１９否定）、データの送信が失敗したことをシステムコントローラ３０に通知する（ステップＳ１２１）。【０１０７】
その後、システムコントローラ３０は、データの送信が失敗した旨を通知された場合には（ステップＳ１２３否定）、失敗したデータに対するリード要求のリトライをＢｕｓＩＦ１０へ発行する（ステップＳ１２４、ステップＳ１０１）。【０１０８】
次に、図１４を用いて、ＢｕｓＩＦ１０がリトライを実行する際の処理の流れについて説明する。図１４は、リトライを実行する際の処理の流れを説明するための図である。なお、図１４の太線で示す処理の流れのうち、ステップＳ１０１〜Ｓ１１８については、図１３の太線で示す処理と同一であるため、説明を省略する。【０１０９】
図１４の太線で示す例では、データの送信処理を開始した回避制御回路１８は、回避用バッファ２１にデータが格納されているか否かを判別する（ステップＳ１１９）。そして、回避制御回路１８は、回避用バッファ２１にデータが格納されていると判別し（ステップＳ１１９肯定）、回避用バッファ２１に格納されたデータをシステムコントローラ３０へ送信する（ステップＳ１１９）。システムコントローラ３０は、回避用バッファ２１に格納されたデータを受信した場合には（ステップＳ１２２）、データの取得に成功したと判別し（ステップＳ１２３肯定）、その後、処理を終了する。【０１１０】
[実施例１の効果]
上述したように、ＢｕｓＩＦ１０は、リード要求を受信してから所定の時間が経過する前にデータを取得できなかった場合には、所定の時間が経過した後で取得したデータを回避用バッファ２１に格納する。そして、ＢｕｓＩＦ１０は、リード要求のリトライを受信した際に、再度所定の時間が経過する前にデータを取得できなかった場合には、回避用バッファ２１に格納したデータをシステムコントローラ３０へ送信する。【０１１１】
このため、ＢｕｓＩＦ１０は、リード要求のリトライに対して確実に応答することができる。結果として、ＢｕｓＩＦ１０は、システムコントローラ３０とＬＳＩ１とを接続するバスの利用率を改善するとともに、リード要求の競合によるライブロックを防止することができる。また、ＢｕｓＩＦ１０は、リード要求に優先度を付すことなく、リード要求のリトライに対して確実に応答することができるため、ルーター２３の回路を単純化し、回路規模を従来よりも小さくすることができる。【０１１２】
また、ＢｕｓＩＦ１０は、前回受信したリード要求が処理の対象とするメモリアドレスと、再度受信したリード要求が処理の対象とするメモリアドレスとが一致するか否かを判別する。そして、ＢｕｓＩＦ１０は、メモリアドレスが一致すると判別した場合には、再度受信したリード要求が前回受信したリード要求のリトライであると判別する。【０１１３】
また、ＢｕｓＩＦ１０は、回避用バッファ２１にデータが格納されているか否かを示すロックフラグを有し、前回受信したリード要求と異なるメモリアドレスを処理の対象とするリード要求を受信した場合には、ロックフラグを「０」に設定する。つまり、ＢｕｓＩＦ１０は、受信したリード要求が前回受信したリード要求のリトライではない場合には、、回避用バッファ２１に格納されたデータを無効化する。このため、ＢｕｓＩＦ１０は、リトライに対して適切なデータを送信することができる。【０１１４】
また、ＢｕｓＩＦ１０を有するＬＳＩ１とシステムコントローラ３０とを接続するバスは、ＢｕｓＩＦ１０とレジスタ群２５との間で情報を送受信する速度よりも低速のクロック周波数で動作するバスである。このため、ＬＳＩ１は、ＬＳＩ１と同様の処理を実行する複数のＬＳＩとともに、一つの共用バスを介して、システムコントローラ３０とデータの送受信を行う事ができる。
【実施例２】
【０１１５】
これまでＢｕｓＩＦ１０を有するＬＳＩ１について説明したが、本発明は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例２として本発明に含まれる他の実施例を説明する。【０１１６】
（１）ＬＳＩ１が受信する要求について
上述したＬＳＩ１は、システムコントローラ３０からリード要求を受信していた。しかし、実施例は、これに限定されるものではなく、例えば、ＬＳＩ１は、システムコントローラ３０から、リード要求またはレジスタ群２５にデータの書込みを要求するライト要求を受信する。そして、ＬＳＩ１は、コマンドバッファ１３に格納されたコマンドがリードであるかライトであるかを判別する。その後、ＬＳＩ１は、受信したコマンドがリードであると判別した場合には、実施例１として説明した各処理を実行し、ライトであると判別した場合には、通常のライト処理を実行してもよい。【０１１７】
（２）ルーターについて
上述したルーター２３は、システムコントローラ３０から送信されたリード要求だけではなく、各ＣＰＵ４０〜４３からもリード要求を受信していた。しかし、実施例はこれに限定されるものではなく、ルーター２３は、例えば、複数のＩ／Ｏ（Input  Output）や他のチップセットからのリード要求を受信し、受信したリード要求を実行してもよい。
【符号の説明】
【０１１８】
１〜３  ＬＳＩ
４  スリーステートバッファ
１０  ＢｕｓＩＦ
１１  リクエスト管理部
１２  アドレスバッファ
１３  コマンドバッファ
１４  比較回路
１５  制御部
１６  ステート管理回路
１７  タイムアウト監視回路
１８  回避制御回路
１９  レスポンス管理部
２０  応答回路
２１  回避用バッファ
２２  通常用バッファ
２３  ルーター
２４  アービタ
２５  レジスタ群
３０  システムコントローラ
４０〜４３  ＣＰＵ
【図１】
2012093475.tif 000003
【図２】
2012093475.tif 000004
【図３】
2012093475.tif 000005
【図４】
2012093475.tif 000006
【図５】
2012093475.tif 000007
【図６】
2012093475.tif 000008
【図７】
2012093475.tif 000009
【図８】
2012093475.tif 000010
【図９】
2012093475.tif 000011
【図１０】
2012093475.tif 000012
【図１１】
2012093475.tif 000013
【図１２】
2012093475.tif 000014
【図１３】
2012093475.tif 000015
【図１４】
2012093475.tif 000016
【図１５】
2012093475.tif 000017
【図１６】
2012093475.tif 000018
【図１７】
2012093475.tif 000019
【国際調査報告】
2012093475.tif 000020
2012093475.tif 000021
2012093475.tif 000022
2012093475.tif 000023