【解決手段】マスタ(11〜13)と、少なくとも1つのスレーブ(21,22)が接続されたバス(3)の間に設けられたアクセス遮断回路40(41〜43)であって、前記マスタの異常を検出する異常検出部404,405,406と、前記異常検出部により前記マスタの異常が検出されたとき、異常が検出された前記マスタのアクセスを遮断するアクセス遮断部402と、アクセスが遮断された前記マスタによるプロトコルを補正して、前記スレーブをアイドル状態に保持するプロトコル補正部403と、を有する。
【発明を実施するための形態】
【0015】
まず、本実施例のアクセス遮断回路、半導体集積回路およびアクセス遮断方法を詳述する前に、
図1および
図2を参照して、システム内の一部モジュールが制御不能に陥った場合およびその問題点を説明する。
【0016】
図1は、システム内の一部モジュールが制御不能に陥った場合を説明するための図であり、システムLSI(半導体集積回路)100におけるマスタ111が制御不能に陥った場合を示す。
【0017】
図1において、参照符号111〜113は、例えば、CPU(Central Processing Unit)やDMA(Direct Memory Access)等のマスタ(バスマスタ)を示し、103は、内部バス(バス)、そして、121,122は、例えば、メモリ等のスレーブ(バススレーブ)を示す。
【0018】
図1に示されるように、LSI100は、マスタ111〜113、バス103およびスレーブ121,122を含み、LSIの外部に設けられた対向機器200との間でデータを遣り取りして所定の処理を行う。
【0019】
ところで、LSI100において、例えば、AMBA(登録商標)等のバス規格に基づいたデータ転送は、マスタ/スレーブの関係で、転送命令に対して応答が求められるハンドシェイク形式で行われる。
【0020】
そのため、例えば、プログラムミスや対向機器200の不具合等が原因となって、或るマスタ111が制御不能になった場合、そのマスタの暴走によってバス経路が占有若しくはロックされ、他のマスタからのアクセスが滞ってシステム全体がハングアップ状態になる。
【0021】
図2は、
図1に示すシステムの動作の一例を説明するためのフローチャートである。まず、
図2に示されるように、例えば、ステップST11において、ウォッチドッグタイマ(WDT:Watch Dog Timer)を起動し、ステップST12に進んで、ソフトウエア上で、定期的にWDTを初期化する。なお、WDTは、ノイズ等の原因によりCPU(例えば、マスタ111)が誤動作(暴走)を始めた場合、これを検出して正常な状態に戻すためのものである。
【0022】
ステップST12において、WDTの初期化が不可(ST12:No)と判定すると、ステップST13に進んで、システム全体をリセットし、さらに、ステップST14に進んで、初期化ルーチンを起動して処理を終了する。なお、ステップST12において、WDTを初期化できる(ST12:No)と判定すると、WDTの初期化が不可と判定するまで処理を継続する。
【0023】
ここで、ステップST13におけるシステム全体のリセット処理、並びに、ステップST14における初期化ルーチンの起動処理は、システムの性能に大きな影響を与えることになる。
【0024】
すなわち、システム内の一部モジュール(例えば、マスタ111)が暴走(制御不能)すると、システム全体をリセットし、初期化シーケンスからやり直すことになり、システム内の1つのモジュールの暴走でも、その影響は、システム全体に及ぶことになる。
【0025】
また、例えば、ハンドシェイクを伴うプロトコルの場合、単純にマスタとバス間のアクセスを即時遮断するだけでは不十分である。すなわち、転送中のデータは、ハンドシェイクを完了させることが求められ、特に、バス側のインターフェース(IF)は、アイドル(IDLE)状態を保証することが求められる。
【0026】
以下、アクセス遮断回路、半導体集積回路およびアクセス遮断方法の実施例を、添付図面を参照して詳述する。なお、以下の記載では、主として、AMBA(登録商標)のAXI(登録商標)を使用した半導体集積回路を例として説明するが、本実施例の適用は、このAXI(登録商標)を使用した半導体集積回路に限定されるものではない。
【0027】
すなわち、本実施例の適用は、例えば、前述したAMBA(登録商標)のAHB(登録商標)やAPB(登録商標)、或いは、AMBA(登録商標)のACE(AXI Coherency Extensions)を使用した半導体集積回路であってもよい。
【0028】
さらに、本実施例の適用は、半導体集積回路(システムLSI,SoC)に限定されるものではなく、複数の半導体集積回路によるシステムやサーバ等に対しても、幅広く適用することができる。なお、例えば、後述するプロトコル補正回路の実装方法や疑似転送方法については、各バスの規格(バスプロトコル)に依存することになる。
【0029】
図3は、アクセス遮断回路の第1実施例が適用されるシステムを模式的に示すブロック図である。
図3において、参照符号1はシステムLSI(半導体集積回路)、11〜13はマスタ、21,22はスレーブ、3は内部バス(バス)、41〜43はアクセス遮断回路、そして、5はシステムコントローラ(CPU等)を示す。
【0030】
図3と上述した
図1の比較から明らかなように、第1実施例では、各マスタ11〜13と、スレーブ21,22が接続されたバス3との間には、それぞれアクセス遮断回路41〜43が設けられている。なお、マスタ11〜13は、例えば、CPUやDMA等であり、また、スレーブ21,22は、例えば、メモリ等である。
【0031】
アクセス遮断回路41〜43は、例えば、システムコントローラ5により制御される。ここで、システムコントローラ5は、例えば、クロックリセットジェネレータやパワーマネージメントユニット等に代表されるSoC(半導体集積回路)内のシステム制御機能を有したモジュールである。
【0032】
また、システムコントローラ5は、マスタ11〜13を制御する上位の演算処理装置、或いは、複数のマスタ11〜13のいずれかが直接役割を担うようにすることも可能である。
【0033】
システムコントローラ5は、各アクセス遮断回路41〜43からのアクセス遮断要求信号ABRSおよびアクセス遮断完了(リセット許可)信号ABCSを受け取り、各アクセス遮断回路41〜43に対して、アクセス遮断許可信号ABPSを出力する。また、システムコントローラ5は、各マスタ11〜13に対して、それぞれのマスタ11〜13を個別にリセットする個別リセット信号IRSTを出力する。
【0034】
ここで、例えば、マスタ11からスレーブ21への転送中に、意図しない要因によってマスタ11が暴走すると、マスタ11とスレーブ21の転送路が、暴走アクセスにより占有され続けてしまうことになる。
【0035】
このような場合、前述した
図1に示す半導体集積回路100では、他のマスタ(例えば、マスタ112)からのアクセスは、延々と待たされることになり、前述したように、WDT等を用いてシステム全体のリセット処理を行って復旧する。
【0036】
これに対して、本第1実施例の半導体集積回路1では、例えば、アクセス遮断回路41により、マスタ11からの暴走アクセスを一時遮断することが可能であり、その状態で、マスタ11のみをリセットする。
【0037】
その後、アクセス遮断回路41を通常状態に設定することで、マスタ11による通常アクセスが可能となる。これにより、システム全体をリセットすることなく、復旧させることができるようになっている。
【0038】
図4は、
図3に示すシステムの動作の一例を説明するためのフローチャートである。まず、
図4に示されるように、例えば、ステップST21において、アクセス遮断回路41が例外ケース(通常動作ではない状態)を検出すると、ステップST22に進む。
【0039】
ステップST22では、(a)バスのハンドシェイク要因、および、(b)転送性能要因の判定を行う。ステップST22において、例えば、アクセス遮断回路41は、バス(内部バス)3を介したスレーブ21との間の転送をモニタし、(a)バスのハンドシェイクの異常を検出(判定)すれば、ステップST23に進む。例えば、ステップST22において、バス3を介したスレーブ21との間のハンドシェイクが完了していないと判定すると、ステップST23に進む。
【0040】
また、ステップST22において、例えば、ハンドシェイクは完了しているが、(b)転送性能の異常、例えば、データの転送レートが、バス3の規格から予め定められた閾値以上異なっている等の異常を検出すれば、ステップST27に進む。
【0041】
ステップST27では、例えば、設定回数およびサンプリング結果に変化がない、すなわち、本来の転送性能(通常の動作)から逸脱している(ST27:Yes)と判定すると、ステップST23に進む。なお、ステップST27において、設定回数およびサンプリング結果に変化がある、すなわち、通常の動作である(ST27:No)と判定すると、ステップST21に戻る。
【0042】
ステップST23では、マスタ11のアクセスを遮断し、さらに、ステップST24に進んで、未完了ハンドシェイクが無いかどうかを判定する。ステップST24において、未完了ハンドシェイクが有る(ST24:No)と判定すると、ステップST28に進んで、疑似転送を行ってからステップST25に進む。
【0043】
また、ステップST24において、未完了ハンドシェイクが無い(ST24:Yes)と判定すると、そのままステップST25に進む。ステップST25では、対象マスタ(例えば、マスタ11)の初期化を行い、さらに、ステップST26に進んで、アクセス遮断の解除を行って処理を終了する。
【0044】
このように、本第1実施例によれば、例えば、マスタ11が暴走(制御不能)の場合、マスタ11のみを遮断して初期化し、例えば、バス3およびスレーブ21を開放してアイドル状態にすることができ、システム全体に影響が及ぶのを避けることができる。
【0045】
次に、本実施例を適用した場合の動作シーケンスを、AMBA(登録商標)のAXI(登録商標)プロトコル(バス規格)を例として説明する。ここで、アクセスの遮断が求められる場合(マスタの暴走)を判定するには、例えば、バスプロトコルから判断できる要因、並びに、転送レートから判断できる要因が考えられる。
【0046】
まず、バスプロトコルから判断できる要因は、例えば、AXI(登録商標)プロトコルにおいて、マスタがプロトコルで規定されているハンドシェイクの処理が不可の場合((a)バスのハンドシェイク要因)である。
【0047】
また、転送レートから判断できる要因は、マスタの転送性能はシステムシミュレーション等の結果から予め規定可能であり、マスタが規定された転送レートから大きく外れた振る舞いをする場合((b)転送性能要因)である。
【0048】
以下の説明において、使用する信号名および用語(略語)は、次の内容(意味)を表している。まず、
図5〜
図8における略語(ARch,Rch,RVALID等)が表す意味は、次の通りである。
【0049】
ARch(Read address channel)は、読み出しアドレスチャネルを示し、Rch(Read data channel)は、読み出しデータチャネルを示し、AWch(Write address channel)は、書き込みアドレスチャネルを示す。また、Wch(Write data channel)は、書き込みデータチャネルを示し、Bch(Write response channel)は、書き込み応答チャネルを示す。
【0050】
次に、信号名RVALID,RREADY,BVALID等は、AMBA(登録商標)のAXI(登録商標)プロトコルで定義された信号名であり、それぞれ下記の意味を示している。RVALIDは、読み出しが有効であることを示し、RREADYは、読み出しの準備が整っていることを示し、BVALIDは、書き込み応答が有効であることを示し、BREADYは、書き込み応答の準備が整っていることを示し、WVALIDは、書き込みデータが有効であることを示す。
【0051】
また、WIDは、書き込みデータのIDタグを示し、WSTRBは、書き込みデータのストローブを示し、AWVALIDは、書き込みアドレスが有効であることを示し、AWIDは、書き込みアドレスのIDタグを示す。さらに、AWLENは、書き込みデータの転送回数(バースト長)を示し、AWADDRは、書き込みアドレスを示す。
【0052】
まず、バスプロトコルから判断できる要因を、AMBA(登録商標)のAXI(登録商標)プロトコル(バス規格)を例として説明する。マスタがプロトコルで規定されているハンドシェイクの処理が不可の場合、例えば、バス(スレーブ)からのVALIDに対して、マスタから任意の時間内にREADYを返せない場合やAWVALIDとWVALIDの相関関係が崩れる場合がこれに当たる。これは、以下のような4つのケース(P1)〜(P4)が考えられる。
【0053】
(P1)は、Rch(読み出しデータチャネル)が完了しない場合であり、(P2)は、Bch(書き込み応答チャネル)が完了しない場合である。また、(P3)は、AWch(書き込みアドレスチャネル)は完了しているが、Wch(書き込みデータチャネル)が完了しない場合である。さらに、(P4)は、Wch(書き込みデータチャネル)は完了しているが、AWch(書き込みアドレスチャネル)が完了しない場合である。
【0054】
これらの(P1)〜(P4)の場合は、バス3のデッドロック要因になるため、検出したら直ちにアクセスを遮断し、対象マスタをリセット処理するのが好ましい。ただし、アクセス遮断時には、上述したように、アクセス遮断回路41〜43からバス3(スレーブ21,22)に対する所定数のREADYやVALIDをマスタ11〜13の代わりに疑似転送し、アイドル状態に遷移させた後にリセット制御に移ることになる。
【0055】
図5は、
図3に示すシステムにおいて、読み出しデータチャネルが完了していない場合の処理(P1)の一例を説明するためのタイミングチャートであり、例えば、マスタ11が、スレーブ(例えば、メモリ)21からデータを読み出す場合を示すものである。
【0056】
図5に示されるように、マスタ11がメモリ21から所定アドレスのデータを読み出す場合、例えば、マスタ11は、メモリ21に対して読み出しアドレスチャネル(読み出し命令)ARchを出力する。
【0057】
メモリ21は、アクセス遮断回路41およびバス3を介してARchを受け取り、マスタ11に対して、読み出しデータチャネルRchの読み出しが有効であることを示すRVALIDのアサートを開始する。ここで、マスタ11が暴走して制御不能になっていると、例えば、マスタ11は、RVALIDを受け取っても、読み出しの準備が整っていることを示すRREADYを返さない。
【0058】
このとき、アクセス遮断回路41は、例えば、マスタ11が、RVALIDを受け取ってからRREADYを返さない設定サイクル数の経過(予め設定されたクロック数のカウント)により、マスタ11が暴走していると判定してアクセスを遮断する。
【0059】
さらに、アクセス遮断回路41は、マスタ11の代わりに、メモリ21に対してRREADYをアサート(疑似アサート:疑似転送)する。すなわち、P1の場合、アクセス遮断回路41は、バス3(メモリ21)からのRVALIDに対してのRREADYを疑似アサートする。そして、アクセス遮断回路41は、例えば、制御不能となったマスタ11のみを初期化し、その後、マスタ11とバス3の接続を有効にする。
【0060】
図6は、
図3に示すシステムにおいて、書き込み応答チャネルが完了していない場合の処理(P2)の一例を説明するためのタイミングチャートであり、例えば、マスタ11が、メモリ21に対してデータを書き込む場合を示すものである。
【0061】
図6に示されるように、マスタ11がメモリ21の所定アドレスに対してデータを書き込む場合、例えば、マスタ11は、メモリ21に対して、書き込みアドレスチャネル(書き込み命令)AWchおよび書き込みデータチャネルWchを出力する。
【0062】
メモリ21は、アクセス遮断回路41およびバス3を介してAWchおよびWchを受け取り、マスタ11に対して、書き込み応答チャネルBchの書き込み応答が有効であることを示すBVALIDのアサートを開始する。ここで、マスタ11が暴走して制御不能になっていると、例えば、マスタ11は、BALIDを受け取っても、書き込み応答の準備が整っていることを示すBREADYを返さない。
【0063】
このとき、アクセス遮断回路41は、例えば、マスタ11が、BALIDを受け取ってからBEADYを返さない設定サイクル数の経過により、マスタ11が暴走していると判定してアクセスを遮断する。
【0064】
さらに、アクセス遮断回路41は、マスタ11の代わりに、メモリ21に対してBREADYを疑似アサートする。すなわち、P2の場合、アクセス遮断回路41は、バス3(メモリ21)からのBVALIDに対してのBREADYを疑似アサートする。そして、アクセス遮断回路41は、例えば、制御不能となったマスタ11のみを初期化し、その後、マスタ11とバス3の接続を有効にする。
【0065】
図7は、
図3に示すシステムにおいて、書き込みアドレスチャネルは完了しているが、書き込みデータチャネルが完了していない場合の処理(P3)の一例を説明するためのタイミングチャートである。
【0066】
図7に示されるように、マスタ11がメモリ21の所定アドレスに対してデータを書き込む場合、例えば、マスタ11は、メモリ21に対して、AWch(書き込みアドレスのIDタグAWID-1)および書き込みデータのIDタグWIDを出力する。
【0067】
ここで、マスタ11が、Wchの書き込みデータが有効であることを示すWVALIDを出力しないとき、アクセス遮断回路41は、WVALIDが出力されない設定サイクル数の経過により、マスタ11が暴走していると判定してアクセスを遮断する。
【0068】
さらに、アクセス遮断回路41は、マスタ11の代わりに、メモリ21に対してWVALIDを疑似アサートし、書き込みデータのストローブWSTRBを『0』として、メモリ21にデータを書き込まないようにする。そして、アクセス遮断回路41は、Bchの書き込み応答の準備が整っていることを示すBREADYを疑似アサートする。
【0069】
すなわち、P3の場合、完了済のAWchのAWID(AWID-1)と等価のID値をWIDとしたWSTRBを『0』として疑似Wchをハンドシェイクする。さらに、その後のBchに備えて、BREADYを疑似アサートし続ける。そして、アクセス遮断回路41は、例えば、制御不能となったマスタ11のみを初期化し、その後、マスタ11とバス(内部バス)3の接続を有効にする。
【0070】
図8は、
図3に示すシステムにおいて、書き込みデータチャネルは完了しているが、書き込みアドレスチャネルが完了していない場合の処理(P4)の一例を説明するためのタイミングチャートである。
【0071】
図8に示されるように、マスタ11がメモリ21の所定アドレスに対してデータを書き込む場合、例えば、マスタ11は、メモリ21に対して、AWchのAWIDおよび書き込みデータのバースト長AWLENを出力する。さらに、マスタ11は、メモリ21に対して、AWchの書き込みアドレスAWADDRおよびWchの書き込みデータのIDタグWID(WID-2,WID-2)を出力する。
【0072】
ここで、マスタ11が、AWchの書き込みアドレスが有効であることを示すAWVALIDを出力しないとき、アクセス遮断回路41は、AWVALIDが出力されない設定サイクル数の経過により、マスタ11が暴走していると判定してアクセスを遮断する。
【0073】
さらに、アクセス遮断回路41は、マスタ11の代わりに、メモリ21に対してAWVALIDを疑似アサートし、AWADDRにより設定された予約領域にデータ書き込みを行う。
【0074】
すなわち、P4の場合、完了済のWchのWID(WID-2)と等価のID値をAWIDとした疑似AWchをハンドシェイクする。その際のアドレス値は、AWADDRにより設定された予約領域に対して発行する。そして、上述したP3と同様に、アクセス遮断回路41は、その後のBchに備えて、BREADYを疑似アサートし続ける。そして、アクセス遮断回路41は、例えば、制御不能となったマスタ11のみを初期化し、その後、マスタ11とバス3の接続を有効にする。
【0075】
以上、バスプロトコルから判断できる要因を、AMBA(登録商標)のAXI(登録商標)プロトコルに基づいて、P1〜P4として説明したが、次に、転送レートから判断できる要因を説明する。
【0076】
まず、マスタ11〜13の転送性能は、例えば、システムシミュレーションの結果等から予め認識することができる。従って、マスタが、予め認識された転送レートから大きく外れた振る舞いをする場合、例えば、そのマスタが暴走して制御不能となっていると判定する。
【0077】
ただし、想定される転送レートから一時的に大きく外れたとしても、転送性能に対してのオーバーシュートやアンダーシュートも考えられるため、何度かサンプリングを行った後に、現象が改善しない場合はアクセスを遮断してマスタを初期化するのが好ましい。
【0078】
この場合は、例えば、転送プロトコルの切れ目を検出し、バス3(スレーブ21,22)をプロトコル違反とならない状態にした後に、アクセスを遮断してリセット制御(マスタの初期化)に移るのが好ましい。
【0079】
なお、いずれの場合も、本第1実施例のように、アクセス遮断要因信号(割り込み信号等を含む)をシステムコントローラ(CPU等)5に発行することで、ソフトウエア経由でアクセス遮断処理を行うことが可能である。
【0080】
或いは、後に、
図12〜
図15を参照して説明する第2実施例のように、アクセス遮断回路(41’)が単独でアクセスを遮断し、マスタ(11)に対してリセットを発生することも可能である。
【0081】
図9は、
図3に示すシステムにおける第1実施例のアクセス遮断回路を示すブロック図である。
図9において、参照符号P11〜P17およびP11’は、
図10および
図11を参照して説明するアクセス遮断回路40の処理における信号(情報,処理)に対応している。
【0082】
図9に示されるように、アクセス遮断回路40(41〜43)は、システムIF部401、アクセス遮断部402、プロトコル補正部403、ステータス受信部404、プロトコルモニタ部405およびパフォーマンスモニタ部406を含む。ここで、ステータス受信部404、プロトコルモニタ部405およびパフォーマンスモニタ部406は、マスタの異常を検出する異常検出部として機能する。
【0083】
システムIF部401は、例えば、システムコントローラ5に対してアクセス遮断要求信号ABRSおよびアクセス遮断完了(リセット許可)信号ABCSを出力すると共に、システムコントローラ5からのアクセス遮断許可信号ABPSを受け取る。また、システムIF部401は、プロトコル補正部403からの信号(処理)P16およびステータス受信部404からの信号P12も受け取る。
【0084】
アクセス遮断部402は、マスタ側に設けられ、システムIF部401からの信号P13,P17を受け取り、プロトコル補正部403に信号P14を出力する。プロトコル補正部403は、スレーブ(バス)側に設けられ、アクセス遮断部402からの信号P14と共に、ステータス受信部404からの信号P15を受け取る。
【0085】
ステータス受信部404は、プロトコルモニタ部405からの信号P11およびパフォーマンスモニタ部406からの信号(要因情報)P11’を受け取り、システムIF部401に対して、信号(遮断要求信号の通知)P12を出力する。また、ステータス受信部404は、プロトコル補正部403に対して、信号(対象信号,各種出力IDおよびアクセス先アドレス等の補正情報)P15を出力する。
【0086】
プロトコルモニタ部405は、バス3を常にモニタしてプロトコルを監視し続け、プロトコルを逸脱した振る舞いを検出した場合や、VALIDとREADYのハンドシェイクタイミングが予め設定したサイクル数をオーバーした場合等の要因(マスタの暴走)を検出する。
【0087】
パフォーマンスモニタ部406は、転送性能を常に計測し続け、予め設定した想定値と比較して要因(マスタの暴走)を検出する。なお、上述した各モジュール機能は、例えば、プロトコルモニタ部405およびパフォーマンスモニタ部406の内部に包含することも可能である。
【0088】
図10および
図11は、
図9に示すアクセス遮断回路の状態遷移を説明するための図である。なお、
図11は、
図10におけるアクセス遮断処理を説明するためのものである。
【0089】
図10に示されるように、
図9に示すアクセス遮断回路40の処理が開始すると、ステップST31において、プロトコルモニタ部405がバス3の転送状態をモニタし、バスのプロトコルに準拠しているかを判定する。そして、バス3の転送状態がプロトコルを逸脱した場合には、プロトコル要因を検出した(P11)として、ステップST33に進む。
【0090】
また、ステップST32において、パフォーマンスモニタ部406がバス3の転送性能を計測し、性能閾値の範囲内かどうかを判定する。そして、バス3の転送性能が性能閾値を逸脱した場合には、性能閾値逸脱(P11’)として、ステップST33に進む。
【0091】
ステップST33では、ステータス受信部404が遮断要因(P11,P11’)を受信し、ステップST34に進んで、システムIF部401に対して遮断要求信号(P12)を送信し、ステップST35に進む。
【0092】
ステップST35では、システムコントローラ5からアクセス遮断許可信号(ABPS)を受信したかどうかを判定し、ABPSを受信したと判定すると、アクセス遮断部402に対して信号P13を出力し、ステップST36に進む。すなわち、ステップST36において、アクセス遮断部402は、
図11に示すアクセス遮断処理を行う。
【0093】
図11に示されるように、アクセス遮断処理が開始すると、アクセス遮断部402は、マスタ(11:11〜13)のアクセスを遮断し、アクセス遮断完了信号(P14)を出力し、ステップST61に進む。
【0094】
ステップST61では、ステータス受信部404が遮断要因を更新し、更新された情報(P15)を出力してステップST62に進む。ここで、ステップST62〜ST67,ST62’およびST67’は、プロトコル補正部403によるプロトコル処理を示す。
【0095】
ステップST62において、転送が未完了かどうかを判定し、転送が未完了である(Yes)と判定した場合には、ステップST62’に進んで、
図5〜
図8を参照して上述したP1〜P4の場合分けを行う。
【0096】
すなわち、Rchが完了しないP1の場合には、ステップST63に進んで、RREADYをマスタの代わりに疑似アサートし、Bchが完了しないP2の場合には、ステップST64に進んで、BREADYをマスタの代わりに疑似アサートし、ステップST67’に進む。
【0097】
さらに、AWchは完了しているが、Wchが完了しないP3の場合には、ステップST65に進んで、規定の(完了済AWIDに従った)WIDでWSTROB=0の疑似Wchをハンドシェイクし、ステップST67に進む。
【0098】
そして、Wchは完了しているが、AWchが完了しないP4の場合には、ステップST66に進んで、予め設定された予約領域のアドレスに対し、規定の(完了済WIDに従った)AWIDで疑似AWchをハンドシェイクし、ステップST67に進む。
【0099】
ステップST67では、続くBchに備えて、BREADYを疑似アサートし、ステップST67’に進む。このように、ステップST62’によりP1〜P4に場合分けされ、それぞれ対応する処理が行われた後、ステップST67’に進む。
【0100】
ステップST67’では、上述したステップST63〜ST67により、例えば、暴走したマスタ11を遮断して、スレーブ21,22(バス3)をアイドル状態に遷移させ、転送完了信号(P16)を出力して、ステップST68に進む。
【0101】
なお、ステップST67’において、未完了の転送があると判定されると、ステップST61に戻って、同様の処理を繰り返す。また、ステップST62において、転送が未完了ではない(No),すなわち、転送が完了していると判定した場合には、そのままステップST68に進む。
【0102】
ステップST68において、システムIF部401は、アクセス遮断完了信号ABCSをアサートし、ステップST69に進む。すなわち、システムコントローラ5は、アクセス遮断回路40(例えば、41)からのABCSを受け取り、例えば、対象となるマスタ11を初期化する。
【0103】
ここで、例えば、暴走したマスタ11は、対応するアクセス遮断回路41によりバス3およびスレーブ21,22から切り離されているため、他のマスタ12,13およびスレーブ21,23等に影響を与えることなく、そのまま初期化することができる。
【0104】
なお、暴走したマスタ11の初期化は、例えば、システムIF部401からの信号P17により、アクセス遮断部402に対して伝えられる。以上により、例えば、暴走したマスタ(11)のアクセス遮断および初期化が完了すると、アクセス遮断回路40(41)によるアクセス遮断が解除されることになる。
【0105】
図12は、アクセス遮断回路の第2実施例が適用されるシステムを模式的に示すブロック図であり、システムコントローラ(CPU等)5を介さずに、アクセス遮断回路41’〜43’単独でアクセスの遮断やマスタ11〜13の初期化を行うものを示している。
【0106】
図12と、前述した
図3の比較から明らかなように、本第2実施例では、各アクセス遮断回路41’〜43’は、対応するマスタ11〜13を初期化するためのマスタリセット信号MRSTを出力する。
【0107】
各アクセス遮断回路41’〜43’から出力されたMRSTは、例えば、それぞれシステムリセット信号SRSTと所定の論理を取って対応するマスタ11〜13を制御するようになっている。
【0108】
図13は、
図12に示すシステムにおける第2実施例のアクセス遮断回路を示すブロック図である。
図13と、前述した
図9の比較から明らかなように、本第2実施例のアクセス遮断回路40’(41’〜43’)は、第1実施例のアクセス遮断回路40におけるシステムIF部401の代わりにリセット信号生成部407が設けられている。
【0109】
すなわち、第2実施例のアクセス遮断回路40’は、システムコントローラ5に対するアクセス遮断要求信号ABRSやアクセス遮断完了信号ABCSを生成する代わりに、マスタを初期化するためのリセット信号を生成するリセット信号生成部407を内蔵したものである。
【0110】
ステータス受信部404は、プロトコルモニタ部405およびパフォーマンスモニタ部406から要因情報P21,P21’を受け取り、アクセス遮断部402'に対する遮断通知P22およびプロトコル補正部403に対する補正情報P24を出力する。ここで、ステータス受信部404、プロトコルモニタ部405およびパフォーマンスモニタ部406は、マスタの異常を検出する異常検出部として機能する。
【0111】
リセット信号生成部407は、プロトコル補正部403からの信号P25を受け取り、自身のアクセス遮断回路40’に対応するマスタを初期化するためのマスタリセット信号MRSTを生成して出力する。なお、
図13において、信号(処理,情報)P21,P21’およびP23〜P25は、
図9におけるP11,P11’およびP14〜P16に対応する。
【0112】
図14および
図15は、
図13に示すアクセス遮断回路の状態遷移を説明するための図である。なお、
図15は、
図14におけるアクセス遮断処理を説明するためのものである。以下の説明では、主として、
図10および
図11を参照して説明した第1実施例と異なる処理に注目して説明を行う。
【0113】
図14と、
図10の比較から明らかなように、
図14に示す第2実施例は、
図10に示す第1実施例におけるステップST34およびST35が省略されたものとなっている。すなわち、
図13に示すアクセス遮断回路40’の処理が開始すると、ステップST31によるプロトコル要因(P21)およびステップST32による性能閾値逸脱(P21’)が、ステップST33において、ステータス受信部404により処理される。
【0114】
ステップST33では、ステータス受信部404が遮断要因(P21,P21’)を受信し、アクセス遮断部402に対して遮断要求信号(P22)を送信し、ステップST37に進む。すなわち、ステップST37において、アクセス遮断部402は、
図15に示すアクセス遮断処理を行う。
【0115】
図15に示されるように、アクセス遮断処理が開始すると、アクセス遮断部402は、マスタのアクセスを遮断し、アクセス遮断完了信号(P23)を出力し、ステップST71に進む。
【0116】
ここで、
図15と、前述した
図11の比較から明らかなように、
図15におけるステップST71〜ST77(ST72’,ST77’)は、
図11におけるステップST61〜ST67(ST62’,ST67’)に対応し、それらの説明は省略する。
【0117】
図15に示されるように、ステップST72’によりP1〜P4に場合分けされ、それぞれステップST73〜ST77により対応する処理が行われた後、ステップST77’に進む。
【0118】
ステップST77’では、例えば、暴走したマスタ11を遮断して、スレーブ21,22(バス3)をアイドル状態に遷移させ、転送完了信号(P25)を出力して、ステップST78に進む。なお、ステップST77’において、未完了の転送があると判定されると、ステップST71に戻って、同様の処理を繰り返す。
【0119】
ステップST78において、リセット信号生成部407は、マスタリセット信号MRSTをアサートし、ステップST79に進み、自身のアクセス遮断回路40’が設けられた対象となるマスタを初期化する。
【0120】
ここで、例えば、暴走したマスタ11は、対応するアクセス遮断回路41によりバス3およびスレーブ21,22から切り離されているため、他のマスタ12,13およびスレーブ21,23等に影響を与えることなく、そのまま初期化することができる。
【0121】
なお、暴走したマスタ11の初期化は、例えば、リセット信号生成部407からの信号P26により、アクセス遮断部402'に対して伝えられる。以上により、例えば、暴走したマスタ(11)のアクセス遮断および初期化が完了すると、アクセス遮断回路40’(41’)によるアクセス遮断が解除されることになる。
【0122】
以上、詳述したように、第1および第2実施例のアクセス遮断回路によれば、例えば、マスタ暴走時には、マスタと内部バス(スレーブ)間のアクセスを遮断し、復旧時には、暴走したマスタのみを初期化することでシステムを復旧させることが可能になる。そして、マスタのアクセス遮断時には、下流の内部バス(スレーブ)に対してプロトコル補正を行い、アイドル状態を保持する。
【0123】
なお、前述したように、本実施例は、主として、AMBA(登録商標)のAXI(登録商標)プロトコルを例として説明したが、本実施例は、これに限定されるものではない。本実施例は、例えば、前述したAMBA(登録商標)のAXI(登録商標)、AHB(登録商標)およびAPB(登録商標)を始めとして、さらに、AMBA(登録商標)のACE(登録商標)(AXI(登録商標)Coherency Extensions)等に適用することができる。
【0124】
また、本実施例は、OCP(Open Core Protocol)やPIF(Xtensa Processor Interface Protocol)等のAMBA(登録商標)以外のバス規格を用いた半導体集積回路に適用することができる。さらに、本実施例の適用は、半導体集積回路に限定されるものではなく、複数の半導体集積回路によるシステムやサーバ等に対して幅広く適用することができる。なお、プロトコル補正回路の実装方法や疑似転送方法については、各バスプロトコル(バス規格)に依存する。
【0125】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではない。また、明細書のそのような記載は、発明の利点および欠点を示すものでもない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【0126】
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
(付記1)
マスタと、少なくとも1つのスレーブが接続されたバスの間に設けられたアクセス遮断回路であって、
前記マスタの異常を検出する異常検出部と、
前記異常検出部により前記マスタの異常が検出されたとき、異常が検出された前記マスタのアクセスを遮断するアクセス遮断部と、
アクセスが遮断された前記マスタによるプロトコルを補正して、前記スレーブをアイドル状態に保持するプロトコル補正部と、を有する、
ことを特徴とするアクセス遮断回路。
【0127】
(付記2)
前記異常検出部は、
前記マスタおよび前記スレーブ間における前記バスの転送状態をモニタする第1モニタ部と、
前記マスタおよび前記スレーブ間における前記バスの転送性能をモニタする第2モニタ部と、
前記第1モニタ部および前記第2モニタ部の出力を受け取って、前記マスタおよび前記スレーブ間の異常を検出するステータス受信部と、を含む、
ことを特徴とする付記1に記載のアクセス遮断回路。
【0128】
(付記3)
さらに、
システムコントローラと信号の遣り取りを行い、前記アクセス遮断部を制御するシステムIF部を有し、
システムを復旧するとき、前記システムコントローラは、アクセスが遮断された前記マスタのみを初期化する、
ことを特徴とする付記2に記載のアクセス遮断回路。
【0129】
(付記4)
前記システムIF部は、
前記システムコントローラに対して、アクセス遮断を要求するアクセス遮断要求信号、および、アクセス遮断が完了したことを示すアクセス遮断完了信号を出力し、
前記前記システムコントローラから、アクセス遮断の許可を示すアクセス遮断許可信号を受け取る、
ことを特徴とする付記3に記載のアクセス遮断回路。
【0130】
(付記5)
さらに、
前記アクセス遮断部を制御すると共に、システムを復旧するとき、アクセスが遮断された前記マスタのみを初期化するマスタリセット信号を生成するリセット信号生成部を有する、
ことを特徴とする付記3に記載のアクセス遮断回路。
【0131】
(付記6)
前記第1モニタ部は、
前記バスの規格に基づいて、前記マスタおよび前記スレーブ間のハンドシェイクが予め設定されたサイクル数だけ経過しても完了しないかどうかをモニタする、
ことを特徴とする付記2乃至付記5のいずれか1項に記載のアクセス遮断回路。
【0132】
(付記7)
前記第2モニタ部は、
前記マスタおよび前記スレーブ間のデータ転送レートが、前記バスの規格に基づく値よりも閾値以上異なっているかどうかをモニタする、
ことを特徴とする付記2乃至付記6のいずれか1項に記載のアクセス遮断回路。
【0133】
(付記8)
前記マスタは複数設けられ、それぞれの前記マスタおよび前記バス間には、付記1乃至付記7のいずれか1項に記載のアクセス遮断回路が設けられている、
ことを特徴とする半導体集積回路。
【0134】
(付記9)
マスタと、少なくとも1つのスレーブが接続されたバスの間のアクセスを遮断するアクセス遮断方法であって、
前記マスタの異常を検出し、
異常が検出された前記マスタのアクセスを遮断し、
アクセスが遮断された前記マスタによるプロトコルを補正して、前記スレーブをアイドル状態に保持する、
ことを特徴とするアクセス遮断方法。
【0135】
(付記10)
前記マスタの異常検出は、
前記マスタおよび前記スレーブ間における前記バスの転送状態をモニタし、
前記マスタおよび前記スレーブ間における前記バスの転送性能をモニタし、
前記バスの転送状態のモニタ結果、および、前記バスの転送性能のモニタ結果に基づいて、前記マスタの異常を検出する、
ことを特徴とする付記9に記載のアクセス遮断方法。
【0136】
(付記11)
さらに、
システムコントローラと信号の遣り取りを行って、前記マスタのアクセス遮断を制御し、
システムを復旧するとき、前記システムコントローラにより、アクセスが遮断された前記マスタのみを初期化する、
ことを特徴とする付記10に記載のアクセス遮断方法。
【0137】
(付記12)
前記マスタのアクセス遮断の制御は、
前記システムコントローラに対して、アクセス遮断を要求するアクセス遮断要求信号、および、アクセス遮断が完了したことを示すアクセス遮断完了信号を出力し、
前記前記システムコントローラから、アクセス遮断の許可を示すアクセス遮断許可信号を受け取って行う、
ことを特徴とする付記11に記載のアクセス遮断方法。
【0138】
(付記13)
さらに、
前記マスタのアクセス遮断を制御し、
システムを復旧するとき、アクセスが遮断された前記マスタのみを初期化するマスタリセット信号を生成する、
ことを特徴とする付記10に記載のアクセス遮断方法。
【0139】
(付記14)
前記バスの転送状態のモニタは、
前記バスの規格に基づいて、前記マスタおよび前記スレーブ間のハンドシェイクが予め設定されたサイクル数だけ経過しても完了しないかどうかをモニタする、
ことを特徴とする付記10乃至付記13のいずれか1項に記載のアクセス遮断方法。
【0140】
(付記15)
前記バスの転送性能のモニタは、
前記マスタおよび前記スレーブ間のデータ転送レートが、前記バスの規格に基づく値よりも閾値以上異なっているかどうかをモニタする、
ことを特徴とする付記10乃至付記14のいずれか1項に記載のアクセス遮断方法。