【解決手段】半導体集積回路11〜13を有する処理装置10において、半導体集積回路13に設けられた状態監視回路13cが、半導体集積回路11,12に対して、半導体集積回路11,12の状態を示す状態情報の送信を指示し、半導体集積回路11,12のそれぞれに設けられた状態監視回路11cが、状態情報の送信の指示を受信した場合、状態情報を暗号化した暗号化情報を、半導体集積回路13に対して送信する。
前記第1の状態監視回路は、前記暗号化情報を受信し、受信した前記暗号化情報を復号して前記状態情報を生成し、前記状態情報を外部装置に出力する、請求項1に記載の処理装置。
前記状態情報は、前記複数の第2の半導体集積回路の電源電圧、温度、負荷状態、または前記複数の第2の半導体集積回路の何れかの要素において発生したエラーに関する情報である、請求項1乃至3の何れか一項に記載の処理装置。
前記第1の状態監視回路は、受信した前記暗号化情報を復号して生成した前記状態情報に基づき、異常を検出し、前記複数の第2の半導体集積回路のうち、前記異常が発生している第3の半導体集積回路の動作の抑制を指示する信号を送信する、
請求項1乃至7の何れか一項に記載の処理装置。
【発明を実施するための形態】
【0012】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、第1の実施の形態の処理装置及び半導体集積回路の一例を示す図である。
【0013】
処理装置10は、半導体集積回路11,12,13を有する。
半導体集積回路11〜13は、たとえば、それぞれ1チップのSoCである。
図1の処理装置10は、3つの半導体集積回路11〜13を有しているが、2以上であれば、3つに限定されない。なお、処理装置10は、2以上の半導体集積回路を1チップのSoCとして構成することによって実現することも可能である。
【0014】
半導体集積回路11は、制御回路11a、インタフェース回路11b、状態監視回路11cを有し、これらはシステムバス11dに接続されている。
制御回路11aは、図示しないROM(Read Only Memory)に格納されたプログラムやデータの少なくとも一部をメモリ14にロードし、プログラムを実行することで、半導体集積回路11の各部を制御して、種々のアプリケーション処理を実行する。制御回路11aは、たとえば、マイクロコントローラ、CPU(Central Processing Unit)、複数のCPUコアを有するCPUなどである。メモリ14は、たとえば、DRAM(Dynamic Random Access Memory)などの揮発性メモリである。
【0015】
インタフェース回路11bは、半導体集積回路13と通信を行うための通信インタフェースである。インタフェース回路11bは、たとえば、PCIe(Peripheral Component Interconnect express)インタフェース、USB(Universal Serial Bus)インタフェースなどである。
【0016】
状態監視回路11cは、半導体集積回路11の状態を示す状態情報を保持しており、半導体集積回路13から、状態情報の送信の指示を受信した場合、状態情報を暗号化した暗号化情報を半導体集積回路13に対して送信する。状態監視回路11cは、処理装置10が状態監視処理を行う際のスレーブとして機能する。
【0017】
状態監視回路11cは、制御回路11c1、セキュア通信回路11c2、状態情報記憶回路11c3を有し、これらはシステムバス11dに接続されている。
制御回路11c1は、たとえば、マイクロコントローラ、CPU、複数のCPUコアを有するCPUなどであり、図示しないROMに格納されたプログラムに基づいて、状態監視回路11cの各部を制御する。
【0018】
セキュア通信回路11c2は、半導体集積回路13から、状態情報の送信の指示を受信した場合、状態情報記憶回路11c3に記憶されている状態情報を暗号化して半導体集積回路13に送信する。なお、状態情報の送信を指示する信号自体も暗号化されている場合は、セキュア通信回路11c2は、受信したその信号を復号する。
【0019】
セキュア通信回路11c2は、インタフェース回路11bが接続されるネットワークとは異なる専用のネットワークに接続されている。たとえば、イーサネット(登録商標)プロトコルを利用した専用ネットワークが用いられる。インタフェース回路11bが接続されるネットワークは、処理装置10の外部に接続されてもよいが、専用ネットワークは、処理装置10の外部には接続されない。
【0020】
状態情報記憶回路11c3は、半導体集積回路11の状態に関する状態情報を記憶する。半導体集積回路11の状態として、図示しないセンサにより検出される温度、制御回路11aの負荷状態、半導体集積回路11に供給される電源電圧の状態、などがある。
【0021】
半導体集積回路12も半導体集積回路11と同様の機能を行う。すなわち、半導体集積回路12は、半導体集積回路12の状態を示す状態情報を保持しており、半導体集積回路13から、状態情報の送信の指示を受信した場合、状態情報を暗号化した暗号化情報を、半導体集積回路13に対して送信する。なお、半導体集積回路12は、半導体集積回路11と同様に、DRAMなどのメモリ15に接続されている。
【0022】
半導体集積回路13は、半導体集積回路11,12との間で送受信されるデータの転送を行うネットワークスイッチ(以下単にスイッチという)である。半導体集積回路13は、インタフェース回路13a,13b、状態監視回路13cを有する。
【0023】
インタフェース回路13aは、半導体集積回路11と通信を行うための通信インタフェースである。インタフェース回路13bは、半導体集積回路12と通信を行うための通信インタフェースである。インタフェース回路13a,13bは、たとえば、PCIeインタフェース、USBインタフェースなどである。
【0024】
状態監視回路13cは、半導体集積回路11,12に対して、半導体集積回路11,12の状態を示す状態情報の送信を指示する。また、状態監視回路13cは、半導体集積回路11,12から、状態情報を暗号化した暗号化情報を受信した場合、暗号化情報を復号して状態情報を生成し、その状態情報を外部装置16に出力する。状態監視回路13cは、処理装置10が状態監視処理を行う際のマスタとして機能する。
【0025】
状態監視回路13cは、制御回路13c1、セキュア通信回路13c2、状態情報記憶回路13c3、出力回路13c4を有する。
制御回路13c1は、たとえば、マイクロコントローラ、CPU、複数のCPUコアを有するCPUなどであり、図示しないROMに格納されたプログラムに基づいて、状態監視回路13cの各部を制御する。
【0026】
セキュア通信回路13c2は、半導体集積回路11,12に対して、状態情報の送信を指示する信号を暗号化して送信する。また、セキュア通信回路13c2は、半導体集積回路11,12から、状態情報を暗号化した暗号化情報を受信した場合、暗号化情報を復号して状態情報を生成する。なお、状態情報の送信を指示する信号は、暗号化されていなくてもよい。
【0027】
状態情報記憶回路13c3は、半導体集積回路13の状態に関する状態情報を記憶する。また、状態情報記憶回路13c3は、セキュア通信回路13c2が受信する、半導体集積回路11,12の状態を示す状態情報を記憶してもよい。
【0028】
出力回路13c4は、制御回路13c1の制御のもと、外部装置16に半導体集積回路11〜13の状態に関する状態情報を出力する。外部装置16は、パーソナルコンピュータ、タブレット端末などである。
【0029】
以下、処理装置10の動作例を説明する。
半導体集積回路11〜13の起動後、状態監視回路11c,13c(及び半導体集積回路12内の図示しない状態監視回路)は、たとえば、定期的に状態情報を取得して記憶する。処理装置10の状態監視処理時においては、たとえば、半導体集積回路13がマスタとして機能する一方、半導体集積回路11、12はスレーブとして機能する。
【0030】
なお、処理装置10、すなわち、半導体集積回路11〜13の起動処理の際に、セキュア通信回路11c2,13c2などを用いて、安全にブートコードの送受信が行われるようにしてもよい。処理装置10の起動処理時においては、たとえば、半導体集積回路11がマスタとして機能し、半導体集積回路12はスレーブとして機能する一方、半導体集積回路13はネットワークスイッチとして機能する。その例については後述する。
【0031】
一方、処理装置10が状態監視処理を行う際のマスタとして機能する状態監視回路13cにおいて、制御回路13c1は、たとえば、定期的に、セキュア通信回路13c2に、状態情報の送信を指示する信号を半導体集積回路11,12に対して送信させる。
【0032】
処理装置10が状態監視処理を行う際のスレーブとして機能する状態監視回路11cにおいて、セキュア通信回路11c2は、状態情報の送信を指示する信号を受けた場合、その信号を(信号が暗号化されている場合には復号して)制御回路11c1に送る。制御回路11c1は、状態情報記憶回路11c3に記憶されている状態情報を読み出してセキュア通信回路11c2に送る。なお、セキュア通信回路11c2が、複数の状態情報のうち、特定の状態情報の送信を指示する信号を受けた場合、制御回路11c1は、その特定の状態情報が記憶されている状態情報記憶回路11c3の番地を指定してその特定の状態情報を読み出す。セキュア通信回路11c2は、読み出された状態情報を暗号化して半導体集積回路13に送信する。
【0033】
半導体集積回路12内の図示しない状態監視回路においても同様の処理が行われる。
状態監視回路13cのセキュア通信回路13c2は、半導体集積回路11,12から暗号化された状態情報を受信した場合、それらを復号する。復号された状態情報は、状態情報記憶回路13c3に記憶されている半導体集積回路13の状態に関する状態情報とともに、出力回路13c4によって外部装置16に出力される。外部装置16は、たとえば、パーソナルコンピュータなどであり、状態情報をディスプレイに表示する。なお、復号された状態情報は、一旦、たとえば、状態情報記憶回路13c3または別の記憶装置に記憶されてもよい。
【0034】
なお、状態監視回路13cの制御回路13c1は、受信した状態情報に基づいて、特定の半導体集積回路を制御するための信号をセキュア通信回路13c2に送信させてもよい。たとえば、半導体集積回路11の制御回路11a付近の温度を示す状態情報が、温度の異常を示す場合、状態監視回路13cの制御回路13c1は、半導体集積回路11に対して、制御回路11aへの電源供給をオフすることを指示する信号を送信してもよい。また、外部装置16のディスプレイに表示された状態情報を確認したユーザが、半導体集積回路13に対して図示しない入力デバイスを用いて、特定の半導体集積回路を制御させる信号の送信指示を入力してもよい。
【0035】
以上のような処理装置10によれば、半導体集積回路11,12の状態を示す状態情報が暗号化されて半導体集積回路13に集められる。これにより、半導体集積回路11,12の状態を安全に監視できる。また、半導体集積回路11〜13の状態を示す状態情報を集約する別のチップを設ける場合に比べて、配線が煩雑になることを低減できる。
【0036】
なお、上記の説明では、スイッチである半導体集積回路13の状態監視回路13cを状態監視処理におけるマスタとして機能させたが、これに限定されず、半導体集積回路11の状態監視回路11cがマスタとして機能してもよい。
【0037】
ただ、スイッチである半導体集積回路13の状態監視回路13cを、状態監視処理を行う際のマスタとして機能させることで、処理装置10内での配線が煩雑になることが避けられる。
【0038】
(第2の実施の形態)
図2は、第2の実施の形態の処理装置及び半導体集積回路の一例を示す図である。
処理装置20は、半導体集積回路の一例であるSoC21a1〜21an,21b1〜21bnと、スイッチ22a1〜22am,23を有する。
【0039】
図2の処理装置20の例では、m個のスイッチ22a1〜22amのそれぞれには、n個のSoCが接続されている。たとえば、SoC21a1〜21anは、スイッチ22a1に接続され、SoC21b1〜21bnは、スイッチ22amに接続されている。また、スイッチ22a1〜22amは、1つのスイッチ23に接続されている。つまり、
図2の処理装置20は、3つの階層を有するシステムとなっている。なお、処理装置20において、さらにスイッチを追加して、4階層以上とすることもできる。
【0040】
図2では、SoC21a1の回路例が示されている。他のSoCも同様の回路で実現できる。
SoC21a1は、p個のAP(Application Processer)31a1〜31ap、p個のセンサ31b1〜31bp、ステータスレジスタ31c、PCIeインタフェース(I/F)31d、メモリコントローラ31e、センサ31f、状態監視回路31gを有し、これらはシステムバス31hに接続されている。
【0041】
AP31a1〜31apは、種々のアプリケーションの処理を行うプロセッサである。なお、
図2の例ではAP31a1〜31apが複数個(p個)設けられた例が示されているが、APは1つであってもよい。
【0042】
センサ31b1〜31bpは、AP31a1〜31apの付近の温度を検出する温度センサである。センサ31b1〜31bpのそれぞれは、AP31a〜31apの何れかの近辺に設けられる。なお、
図2では、センサ31b1〜31bpが検出した温度の情報(アナログ信号)をデジタル信号に変換する回路などについては図示が省略されている。
【0043】
ステータスレジスタ31cは、SoC21a1の状態に関する状態情報を記憶する。
PCIeインタフェース31dは、スイッチ22a1に情報を送信するとともに、スイッチ22a1が送信する情報を受信する。
【0044】
メモリコントローラ31eは、AP31a1〜31apの制御に基づいて、DRAM24に対するデータの書き込み、DRAM24からのデータの読み出しなどを行う。DRAM24は、たとえば、DDR(Double-Data-Rate)−SDRAM(Synchronous DRAM)などである。
【0045】
センサ31fは、メモリコントローラ31eの付近の温度を検出する温度センサである。センサ31fは、メモリコントローラ31eの近辺に設けられる。なお、
図2では、センサ31fが検出した温度の情報(アナログ信号)をデジタル信号に変換する回路などについては図示が省略されている。
【0046】
SoC21a1に複数のDRAMが接続され、メモリコントローラも複数ある場合、メモリコントローラの個数に応じて、センサも複数設けられていてもよい。
状態監視回路31gは、MCU(Micro Controller Unit)31g1、ROM31g2、RAM(Random Access Memory)31g3、電源制御回路31g4、暗号/復号処理回路31g5、セキュア通信回路31g6、ステータスレジスタ31g7を有する。
【0047】
MCU31g1は、ROM31g2に格納されるプログラムに基づき、後述する起動処理や状態監視処理を行う。なお、MCU31g1の代わりに、CPUなどのプロセッサを用いてもよい。
【0048】
ROM31g2は、フラッシュメモリなどの不揮発性のストレージであり、MCU31g1が実行するプログラムや各種データを格納する。RAM31g3は、MCU31g1が実行するプログラムの少なくとも一部を一時的に格納する。また、RAM31g3は、MCU31g1による処理に用いられる各種データを格納する。
【0049】
電源制御回路31g4は、システムバス31hを介して、SoC21a1の各部の電源のオンオフを制御することで、各部を起動させるか否かを決定する。
暗号/復号処理回路31g5は、処理装置20の起動処理時においてSoC21a1がマスタとして機能する場合、処理装置20内の他のSoCまたはスイッチのMCUやAPのブートコードやブートコードの配信経路を示す経路情報を暗号化する。そして、暗号/復号処理回路31g5は、暗号化したブートコードや経路情報を、不揮発性メモリ25に予め記憶する。さらに、暗号/復号処理回路31g5は、不揮発性メモリ25から読み出される暗号化されたブートコードと経路情報を復号する。
【0050】
なお、暗号/復号処理回路31g5は、経路情報を暗号化しなくてもよい。また、SoC21a1が、処理装置20の起動処理時においてスレーブとして機能する場合には、暗号/復号処理回路31g5はなくてもよい。
【0051】
セキュア通信回路31g6は、たとえば、イーサネットプロトコルを利用した専用ネットワークを用いて、SoC21a1以外の他のSoCまたはスイッチ22a1〜22am,23に含まれる図示しないセキュア通信回路と情報の送受信を行う。
【0052】
セキュア通信回路31g6は、処理装置20の起動処理時においてSoC21a1がマスタとして機能する場合、ブートコードと経路情報とを再度暗号化して、たとえば、スイッチ22a1に送信する。さらに、セキュア通信回路31g6は、スイッチ22a1を介してブートコードの各配信先からの受信完了通知信号を受信すると、MCU31g1に各配信先におけるブートコードの受信が完了した旨を通知する。そして、セキュア通信回路31g6は、MCU31g1からブートコードの配信先のSoCまたはスイッチのMCUやAPの起動を指示する旨の信号を受け、その信号を送信する。なお、セキュア通信回路31g6は、経路情報を暗号化しなくてもよい。
【0053】
セキュア通信回路31g6は、処理装置20の起動処理時においてSoC21a1がスレーブとして機能する場合、ブートコードと経路情報を受信する。そして、セキュア通信回路31g6は、ブートコードと経路情報(暗号化されている場合)を復号する。また、セキュア通信回路31g6は、復号したブートコードと経路情報を再度暗号化して、経路情報で指定されている自身以外の配信先に送信する。さらにセキュア通信回路31g6は、ブートコードと経路情報を受信した旨を示す受信完了通知信号を、起動処理時においてマスタとなるSoCまたはスイッチに送信する。また、セキュア通信回路31g6は、マスタが送信する起動指示信号を受信すると、起動指示信号を受信した旨を、電源制御回路31g4に通知する。なお、セキュア通信回路31g6は、経路情報を暗号化しなくてもよい。
【0054】
また、セキュア通信回路31g6は、状態監視回路31gが状態監視処理におけるスレーブとして機能する場合、状態監視処理におけるマスタとして機能する状態監視回路を含むSoCまたはスイッチから、状態情報の送信を指示する信号を受信する。セキュア通信回路31g6は、この信号が暗号化されている場合には復号する。そして、セキュア通信回路31g6は、MCU31g1による制御に基づいて、ステータスレジスタ31cまたはステータスレジスタ31g7に記憶されている状態情報を暗号化して、マスタとして機能する状態監視回路を含むSoCまたはスイッチに送信する。
【0055】
一方、セキュア通信回路31g6は、状態監視回路31gが状態監視処理におけるマスタとして機能する場合、状態情報の送信を指示する信号を暗号化して送信する。また、セキュア通信回路31g6は、スイッチ22a1を介して、処理装置20内の他のSoCまたはスイッチの状態を示す状態情報(暗号化情報)を受信した場合、暗号化情報を復号する。なお、セキュア通信回路31g6は、状態情報の送信を指示する信号を暗号化しなくてもよい。
【0056】
ステータスレジスタ31g7は、電源モニタ26に接続されており、状態情報として、SoC21a1に供給される電源電圧に関する情報である電圧情報を記憶する。
図2の例では、SoC21a1には2つのステータスレジスタ31c,31g7が設けられているが、どちらか一方だけでもよい。
【0057】
図3は、暗号/復号処理回路の一例を示す図である。
暗号/復号処理回路31g5は、制御回路41、暗号/復号回路42を有している。
制御回路41は、暗号/復号回路42を用いた暗号/復号処理を制御する。
【0058】
暗号/復号回路42は、不揮発性メモリ25との間で送受信されるデータに対して暗号/復号処理を行う。以下では、ハードウェア鍵及び共通暗号鍵を用いた暗号/復号処理の例を説明する。また、以下ではSoC21a1が処理装置20の起動処理時においてマスタとして機能するものとして説明する。
【0059】
SoC21a1の初回起動時に、暗号/復号回路42は、システムバス31hを介して、ROM31g2またはRAM31g3から供給されるブートコードとブートコードの配信経路を示す経路情報を共通暗号鍵で暗号化する。さらに、暗号/復号回路42は、その共通暗号鍵を、ハードウェア鍵で暗号化する。
【0060】
制御回路41は、MCU31g1によって指定されるアドレス(ライトアドレス)に基づき、不揮発性メモリ25に、共通暗号鍵で暗号化されたブートコードと経路情報、ハードウェア鍵で暗号化された共通暗号鍵を格納する。
【0061】
制御回路41は、初回以降の起動時、MCU31g1によって指定されるアドレス(リードアドレス)に基づき、暗号化された共通暗号鍵とブートコードと経路情報を、不揮発性メモリ25から読み出す。そして、制御回路41の制御のもと、暗号/復号回路42はハードウェア鍵で共通暗号鍵を復号し、復号した共通暗号鍵でブートコードと経路情報を復号する。
【0062】
なお、処理装置20とは別の装置によって予め暗号化された上述のブートコードや経路情報、共通暗号鍵が不揮発性メモリ25に格納されていてもよい。また、なお、経路情報については暗号化されていなくてもよい。
【0063】
図4は、セキュア通信回路の一例を示す図である。
セキュア通信回路31g6は、DMA(Direct Memory Access)処理回路43、パケット処理回路44、暗号/復号回路45、ハードウェア鍵設定回路46、メディアアクセスコントローラ47を有する。
【0064】
DMA処理回路43は、MCU31g1またはパケット処理回路44から供給されるコマンドに基づき、システムバス31hを介して、RAM31g3との間で、情報の送受信を行う。さらに、DMA処理回路43は、システムバス31h及び暗号/復号処理回路31g5を介して、不揮発性メモリ25との間で、情報の送受信を行う。
【0065】
パケット処理回路44は、DMA処理回路43が受信したブートコードや経路情報などの情報を受け、その情報に基づくパケットを生成し、そのパケットを暗号/復号回路45に送信する。また、パケット処理回路44は、MCU31g1によってステータスレジスタ31c,31g7から読み出された状態情報に基づくパケットを生成し、そのパケットを暗号/復号回路45に送信する。
【0066】
さらに、パケット処理回路44は、暗号/復号回路45から暗号化されたパケットを受信すると、暗号化されたパケットをメディアアクセスコントローラ47に供給する。また、パケット処理回路44は、メディアアクセスコントローラ47から暗号化されたパケットを受けると、暗号化されたパケットを暗号/復号回路45に送信する。そして、パケット処理回路44は、暗号/復号回路45から復号されたパケットを受信すると、復号されたパケットをDMA処理回路43に供給する。
【0067】
暗号/復号回路45は、ハードウェア鍵を用いて、パケットの暗号化や復号、ハッシュ値の計算を行う。
ハードウェア鍵設定回路46には、ハードウェア鍵が設定されている。ハードウェア鍵設定回路46として、たとえば、電気ヒューズ(E−Fuse)などのOTP−ROM(One Time Programmable-ROM)を用いることができる。
【0068】
メディアアクセスコントローラ47は、MACアドレスを用いて、暗号化されたパケットの送受信を行う。
図5は、ステータスレジスタに記憶される状態情報の一例を示す図である。
【0069】
図5では、ステータスレジスタ31c,31g7に記憶される状態情報がまとめて示されている。たとえば、状態情報として、センサ31b1〜31bpにより検出されるAP31a1〜31ap付近の温度、AP31a1〜31apが実行するパフォーマンスモニタ機能により取得されるAP31a1〜31apのそれぞれのパフォーマンス情報(負荷状態などを示す情報)がある。さらに、状態情報として、センサ31fにより検出されるメモリコントローラ31e付近の温度、SoC21a1内の何れかの要素において発生したエラーに関する情報であるエラー発生情報、電源モニタ26により検出される電圧情報がある。
【0070】
図5の例では、各状態情報は、32ビットで表されている。また、各状態情報はステータスレジスタ31c,31g7のアドレスA1〜Aqと対応付けられている。たとえば、Ap31a1付近の温度は、アドレスA1に記憶され、メモリコントローラ31e付近の温度はアドレスA2p+1に記憶され、電圧情報はアドレスAqに記憶される。MCU31g1は、アドレスA1〜Aqの何れかを指定することで、指定されたアドレスに記憶されている状態情報を読み出すことができる。
【0071】
なお、SoC21a1は、状態監視回路31gが状態監視処理におけるマスタとして機能する場合に受信した状態情報を外部装置に出力する出力回路を有していてもよい。外部装置は、たとえば、表示装置が接続されたパーソナルコンピュータなどである。
【0072】
図2において、スイッチ22a1は、PCIeインタフェース32a1〜32an,32b、状態監視回路32cを有し、これらはシステムバス32dに接続されている。
PCIeインタフェース32a1〜32anは、SoC21a1〜21anに情報を送信するとともに、SoC21a1〜21anが送信する情報を受信する。
【0073】
PCIeインタフェース32bは、スイッチ23に情報を送信するとともに、スイッチ23が送信する情報を受信する。
状態監視回路32cは、SoC21a1の状態監視回路31gと同様の回路構成で実現できる。
【0074】
スイッチ22a1〜22amのうち、スイッチ22a1以外もスイッチ22a1と同様の回路構成で実現できる。
スイッチ23は、PCIeインタフェース33a1〜33am、状態監視回路33bを有し、これらはシステムバス33cに接続されている。
【0075】
PCIeインタフェース33a1〜33amは、スイッチ22a1〜22amに情報を送信するとともに、スイッチ22a1〜22amが送信する情報を受信する。
状態監視回路33bは、SoC21a1の状態監視回路31gと同様の回路構成で実現できる。
【0076】
以下、第2の実施の形態の処理装置20の動作例を説明する。
まず、処理装置20の起動処理の例を説明する。以下の説明では、SoC21a1が起動処理においてマスタとして機能するものとして説明する。また、以下では、他のSoCやスイッチ22a1〜22am,23をスレーブと呼ぶ場合もある。
【0077】
処理装置20に電源が投入されると、各SoC(SoC21a1〜21anなど)とスイッチ22a1〜22am,23の電源制御回路(電源制御回路31g4など)が起動する。各スレーブの電源制御回路(
図2では図示が省略されている)は、セキュア通信回路(
図2では図示が省略されている)の初期設定(レジスタ設定など)を行い、セキュア通信回路を起動する。
【0078】
マスタであるSoC21a1の電源制御回路31g4は、MCU31g1を起動し、MCU31g1は暗号/復号処理回路31g5、セキュア通信回路31g6の初期設定を行い、これらを起動する。なお、電源制御回路31g4が、暗号/復号処理回路31g5、セキュア通信回路31g6の初期設定を行ってもよい。
【0079】
暗号/復号処理回路31g5は、たとえば、MCU31g1による初期設定で指定された不揮発性メモリ25のアドレスから、経路情報を読み出す(暗号化されている場合は復号する)。
【0080】
セキュア通信回路31g6は、経路情報を暗号/復号処理回路31g5からリードして、経路情報に基づき、スイッチ22a1に対してパケットを送信することで、所在確認の問い合わせをする。
【0081】
スイッチ22a1の状態監視回路32c内のセキュア通信回路は、所在確認の問い合わせを受けると、応答パケットをSoC21a1に送信することで、所在確認に対する応答を行う。その後、SoC21a1の暗号/復号処理回路31g5は、たとえば、MCU31g1による初期設定で指定された不揮発性メモリ25のアドレスから、暗号化されたブートコードを読み出して復号する。
【0082】
セキュア通信回路31g6は、復号されたブートコードを暗号/復号処理回路31g5からリードして、ブートコードと経路情報を暗号化し(経路情報については暗号化しなくてもよい)、スイッチ22a1に送信する。
【0083】
スイッチ22a1の状態監視回路32c内のセキュア通信回路は、暗号化されたブートコードと経路情報とを受信し、復号処理を行う。そして、状態監視回路32c内のセキュア通信回路は、経路情報をセキュア通信回路内の記憶部(たとえば、レジスタ)に保持し、ブートコードを状態監視回路32c内のRAMに格納する。また、状態監視回路32c内のセキュア通信回路は、SoC21a1に対して、受信完了通知信号を送信することで、受信の完了通知を行う。
【0084】
経路情報に示されているブートコードの配信経路に、スレーブの1つであるスイッチ22a1からのブートコードの配信先として別のスレーブがある場合、状態監視回路32c内のセキュア通信回路は、そのスレーブに所在確認の問い合わせを行う。そして、状態監視回路32c内のセキュア通信回路は、所在確認に対する応答を受けると、RAMからブートコードをリードし、経路情報とブートコードを暗号化して(経路情報については暗号化しなくてもよい)、配信先のスレーブに送信する。
【0085】
なお、他のスレーブについてもブートコードの配信先として別のスレーブがある場合には、スイッチ22a1と同様の処理を行う。
SoC21a1のMCU31g1は、セキュア通信回路31g6を介して、全スレーブから、ブートコードの受信が完了した旨の通知を受けると、全スレーブのMCUの起動を指示する起動指示信号をセキュア通信回路31g6に送信させる。
【0086】
各スレーブのセキュア通信回路は、起動指示信号を受信すると、その旨を電源制御回路に通知する。電源制御回路は、セキュア通信回路から起動指示信号を受信した旨の信号を受けると、MCUを起動する。その後、各スレーブのMCUは、RAMに格納されたブートコードに基づく起動処理を行う。
【0087】
以上のような起動処理後、たとえば、定期的に、以下に説明するような状態監視処理が行われる。
図6は、状態監視処理におけるマスタとスレーブの関係の例を示す図である。
【0088】
以下に示す状態監視処理では、1つのスイッチの状態監視回路(
図6では“SMB”と表記されている)が、マスタ(
図6では“(M)”と表記されている)として機能する。そして、その他のスイッチ及びSoCの状態監視回路は、スレーブ(
図6では“(S)”と表記されている)として機能する。
図6に示すようなシステムでは1つのマスタが他のスレーブを一元管理する。
【0089】
以下の説明では、
図2に示したスイッチ23の状態監視回路33bが状態監視処理においてマスタとして機能するものとして説明する。また、以下では、SoC(SoC21a1〜21an,21b1〜21bnなど)や、スイッチ22a1〜22amの状態監視回路をスレーブと呼ぶ場合もある。
【0090】
図7は、状態監視処理時の処理装置の一例の動作を示すシーケンス図である。なお、
図7では、マスタであるスイッチ23と、スレーブの1つであるSoC21a1の動作例が示されている。他のスレーブの動作は、SoC21a1の動作と同じである。
【0091】
スイッチ23とSoC21a1において、前述の起動処理が行われると(T1,T2)、スイッチ23の状態監視回路33b内のセキュア通信回路は、状態情報の送信を指示する信号を暗号化して各スレーブに送信する(T3)。なお、セキュア通信回路は、状態情報の送信を指示する信号を暗号化しなくてもよい。
【0092】
スレーブの1つであるSoC21a1のセキュア通信回路31g6は、状態情報の送信を指示する信号を受信すると(T4)、その信号が暗号化されている場合には復号する。そして、MCU31g1は、ステータスレジスタ31c,31g7に記憶されている状態情報を読み出す(T5)。なお、MCU31g1は、特定の状態情報の送信が指示された場合には、その状態情報が格納されているステータスレジスタ31c,31g7のアドレスを指定して、読み出しを行う。
【0093】
SoC21a1のセキュア通信回路31g6は、読み出された状態情報を暗号化してスイッチ23に送信する(T6)。スイッチ23の状態監視回路33b内のセキュア通信回路は、状態情報を受信して復号する(T7)。そして、スイッチ23の状態監視回路33b内のMCUは、各スレーブから受信した状態情報を集約して、たとえば、状態監視回路33b内のRAMに記憶する(T8)。その後、たとえば、状態監視回路33b内の出力回路は、集約した状態情報を外部装置に出力する。
【0094】
スイッチ23は、たとえば、T3〜T9の処理を定期的に実行する。
なお、上記の説明では、1つのマスタが他のスレーブを一元管理する例を示したが、システムの中間階層に存在するスイッチ内の状態監視回路が中継機能を担ってもよい。
【0095】
図8は、状態監視処理におけるマスタとスレーブの関係の他の例を示す図である。
図8の例では、システムの中間階層に存在するスイッチ(
図2のスイッチ22a1〜22amに相当)の状態監視回路が、マスタとして機能するスイッチの状態監視回路と、SoCの状態監視回路との間の中継機能を担う。このようなシステムの場合、複数のSoCの状態情報は、一旦、中間階層に存在するスイッチの状態監視回路に集約され、その後、マスタとして機能するスイッチの状態監視回路に送られる。
【0096】
次に、状態情報に基づいたマスタによるスレーブの制御例を説明する。
マスタは、受信した状態情報から異常を検出した場合、異常があるスレーブの動作の抑制を指示する信号を送信する。たとえば、マスタは、スレーブ内の特定の要素の電源をオフしたり、スレーブ自身の電源をオフしたりすることを指示することで、スレーブの動作を抑制する。
【0097】
図9は、状態情報に基づいたマスタによるスレーブの制御の一例を示すシーケンス図である。
スイッチ23の状態監視回路33bのMCUが、受信した各スレーブの状態情報から、SoC21a1のAP31a1〜31apの温度の異常を検出したとする(T10)。なお、状態情報に基づく異常の検出は、状態監視回路33bのMCUが行ってもよいし、たとえば、外部装置の表示装置に表示された状態情報に基づいてユーザが行ってもよい。後者の場合には、異常(たとえば、上記のように温度の異常)を検出した旨の信号が、入力デバイスを用いて状態監視回路33bに入力される。
【0098】
SoC21a1のAP31a1〜31apの温度の異常が検出された場合、スイッチ23の状態監視回路33b内のセキュア通信回路は、MCUの制御のもと、SoC21a1に対して、AP31a1〜31apの電源オフを指示する信号を送信する(T11)。セキュア通信回路は、この信号を暗号化して送信してもよい。
【0099】
SoC21a1のセキュア通信回路31g6は、AP31a1〜31apの電源オフを指示する信号を受信する(T12)。この信号が暗号化されている場合には、セキュア通信回路31g6は復号を行う。そして、MCU31g1の制御のもと、電源制御回路31g4は、AP31a1〜31apの電源をオフする(T13)。
【0100】
図10は、状態情報に基づいたマスタによるスレーブの制御の他の例を示すシーケンス図である。
スイッチ23の状態監視回路33bのMCUが、受信した各スレーブの状態情報から、SoC21a1の通信異常を検出したとする(T20)。その場合、スイッチ23の状態監視回路33b内のセキュア通信回路は、MCUの制御のもと、SoC21a1の電源スイッチを制御するスイッチ22a1に対して、SoC21a1の切り離しを指示する信号を送信する(T21)。セキュア通信回路は、この信号を暗号化して送信してもよい。
【0101】
スイッチ22a1の状態監視回路32cのセキュア通信回路は、SoC21a1の切り離しを指示する信号を受信する(T22)。この信号が暗号化されている場合には、セキュア通信回路は復号を行う。そして、状態監視回路32c内のMCUの制御のもと、状態監視回路32c内の電源制御回路は、SoC21a1の電源スイッチをオフする(T23)。
【0102】
以上説明した第2の実施の形態の処理装置20によれば、複数のSoC(SoC21a1〜SoC21an,21b1〜21bnなど)と複数のスイッチ22a1〜22am,23の状態を示す状態情報が暗号化されて1つのSoCまたはスイッチに集められる。これにより、各SoCまたは各スイッチの状態を安全に監視できる。また、各SoCと各スイッチの状態を示す状態情報を集約する別のチップを設ける場合に比べて、配線が煩雑になることを低減できる。
【0103】
なお、上記の説明では、処理装置20の各SoCまたは各スイッチが、状態情報を取得または収集する機能を有するものとして説明したが、状態情報を取得または収集する機能を有さないSoCまたはスイッチがあってもよい。
【0104】
以上、実施の形態に基づき、本発明の処理装置、半導体集積回路及び状態監視方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。