(57)【要約】【課題】比較的小さな規模でサイドチャネル攻撃に対する耐性を向上したバス回路の実現。【解決手段】データバス11,21と、データをデータバスのビット幅の半分以下の数の複数ビットを含む複数の分割データに分割する分割回路13と、複数の分割データの各々を反転した複数の反転分割データを生成する反転回路42,43と、複数の分割データの各々と各々の分割データに対応した反転分割データをそれぞれ対データとしてデータバスに出力する出力回路45,46と、データバスから受信した前記対データから、前記複数の分割データを抽出して結合する結合回路23と、を有するバス回路。【選択図】図３
2013222285.tif 000002
【特許請求の範囲】
【請求項１】
一方のモジュールから出力された複数ビット数のデータを他方のモジュールに伝送するバス回路であって、
データバスと、
前記データを、前記データバスのビット幅の半分以下の数の複数ビットを含む複数の分割データに分割する分割回路と、
前記複数の分割データの各々を反転した複数の反転分割データを生成する反転回路と、
前記複数の分割データの各々と前記各々の分割データに対応した反転分割データをそれぞれ対データとして前記データバスに出力する出力回路と、
前記データバスから受信した前記対データから、前記複数の分割データを抽出して結合する結合回路と、を備えることを特徴とするバス回路。
【請求項２】
前記出力回路は、前記対データを前記データバスに順に出力するか、前記複数の分割データを同時に前記データバスに出力するか、の出力状態が選択可能であり、
前記出力回路の前記出力状態を示す制御信号を伝送する信号線をさらに備え、
前記結合回路は、前記信号線からの前記制御信号に基づいて、前記複数の分割データを抽出して結合する処理を変更する請求項１記載のバス回路。
【請求項３】
前記データバスは、前記複数ビット数の半分のビット数の第１分割データバスおよび第２分割データバスを備え、
前記分割データの各々は、前記第１分割データバスと前記第２分割データバスの一方で、前記各々の分割データに対応した反転分割データは、前記第１分割データバスと前記第２分割データバスの他方で伝送され、
前記第１分割データバスと前記第２分割データバスは、近傍に配置されている請求項１または２記載のバス回路。
【請求項４】
前記出力回路は、前記第１分割データバスおよび前記第２分割データバスで伝送されるデータのパリティビットを付加するパリティ回路を備え、
前記データバスは、前記パリティビットを伝送する信号線を備える請求項１から３のいずれか１項記載のバス回路。
【請求項５】
前記結合回路は、伝送された前記パリティビットに基づいて、エラー検出またはエラー訂正を行う請求項４記載のバス回路。
【請求項６】
第１のモジュールから出力されたライトデータを第２のモジュールに伝送するライトバス回路と、前記第２のモジュールから出力されたリードデータを前記第１のモジュールに伝送するリードバス回路と、を備える半導体装置であって、
前記ライトバス回路および前記リードバス回路は、請求項１から５のいずれか１項記載のバス回路である半導体装置。
【請求項７】
複数の第１のモジュールと、複数の第２のモジュールと、前記複数の第１のモジュールのバスと前記複数の第２のモジュールのバスの接続を切り替える接続回路と、を備える半導体装置であって、
前記複数の第１のモジュールの前記バスおよび前記複数の第２のモジュールの前記バスは、請求項１から５のいずれか１項記載のバス回路である半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バス回路および半導体装置に関する。
【背景技術】
【０００２】
システムＬＳＩ等の動作状況を、電磁放射を観察するなど様々な物理的手段で外部から観察することにより、ＬＳＩ内部の情報を取得しようとするサイドチャネル攻撃が知られている。サイドチャネル攻撃を防ぐ一手法として、位相反転回路を実装する手法が考えられる。位相反転回路は、元の回路（ベース回路）と逆の動作を行う回路である。位相反転回路をベース回路の近傍に配置すると、電磁放射が互いに逆相となって打消し合う。これにより周囲への電磁放射が低減され、ＬＳＩの外部からＬＳＩ内部の動作状況を観察するのを難しくする。なお、ベース回路および位相反転回路は、トランジスタ等の動作要素だけでなく、配線等も含むものとする。
【０００３】
すべてのベース回路に対応して近傍に位相反転回路を設ければ、ＬＳＩの全域に渡って電磁放射が打ち消し合い、サイドチャネル攻撃に対して強い耐性を有することになるが、回路規模の点で問題がある。そこで、位相反転回路の回路規模を削減するため、ベース回路の一部にだけ位相反転回路を実装することが考えられる。例えば、マスタモジュールおよびスレーブモジュールを搭載した半導体装置（ＬＳＩ）では、データバスがサイドチャネル攻撃の標的になりやすい。そのため、データバスにだけ位相反転回路を実装することが考えられる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平９−２５１３３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、データバスは配線が長くなりやすいためレイアウトで必要な実装面積は大きくなり、特に近年のデータ処理量の増大によるデータバス幅増大に伴い回路規模が一層大きくなるという問題がある。そのため、サイドチャネル攻撃に対して高い耐性を有する回路を、小さな回路規模で実現することが求められている。
【０００６】
実施形態によれば、サイドチャネル攻撃を防ぐ回路が、比較的小さな規模で実現される。
【課題を解決するための手段】
【０００７】
第１の観点によれば、一方のモジュールから出力された複数ビット数のデータを他方のモジュールに伝送するバス回路が提供される。バス回路は、データバスと、分割回路と、反転回路と、出力回路と、結合回路と、を有する。分割回路は、データを、データバスのビット幅の半分以下の数の複数ビットを含む複数の分割データに分割する。反転回路は、複数の分割データの各々を反転した複数の反転分割データを生成する。出力回路は、複数の分割データの各々と各々の分割データに対応した反転分割データをそれぞれ対データとしてデータバスに出力する。結合回路は、データバスから受信した対データから、複数の分割データを抽出して結合する。
【発明の効果】
【０００８】
第１の観点のバス回路によれば、比較的小さな規模でサイドチャネル攻撃に対する耐性を向上したデータバスが実現される。
【図面の簡単な説明】
【０００９】
【図１】図１は、位相反転回路を実装したシステムＬＳＩの構成例を示す図である。
【図２】図２は、データバスのみに位相反転回路を実装したシステムＬＳＩの構成例を示す図である。
【図３】図３は、第１実施形態のバス回路を搭載した半導体装置（システムＬＳＩ）の構成を示す図である。
【図４】図４は、分割回路および結合回路の回路構成の一例を示す図である。
【図５】図５は、第１実施形態のバス回路において、ｎ＝８の場合の構成および動作の一例を示すタイムチャートである。
【図６】図６は、第２実施形態のバス回路を搭載した半導体装置の分割回路の構成例を示す図である。
【図７】図７は、第２実施形態のバス回路を搭載した半導体装置の結合回路の構成例を示す図である。
【図８】図８は、第２実施形態において、ｎ＝８の場合で、位相反転回路を無効とした時の構成および動作の一例を示すタイムチャートである。
【図９】図９は、第３実施形態のバス回路を搭載した半導体装置の分割回路の構成例を示す図である。
【図１０】図１０は、パリティ(Parity)追加回路（ｐ）の回路構成の一例を示す図である。
【図１１】図１１は、第３実施形態のバス回路を搭載した半導体装置の結合回路の構成例を示す図である。
【図１２】図１２は、第３実施形態において、ｎ＝８の場合で、位相反転回路を有効とした時の構成および動作の一例を示すタイムチャートである。
【図１３】図１３は、第３実施形態をAMBA AXIシステムに適用した実施例のシステムを示す図であり、（Ａ）がライトデータバスを、（Ｂ）がリードデータバスを、示す。
【図１４】図１４は、データ対の配置例を示す図である。
【発明を実施するための形態】
【００１０】
所定の処理を実行するシステムを、１パッケージに搭載したシステムＬＳＩ（半導体装置）が知られている。
【００１１】
このようなシステムＬＳＩは、外部からのデータを受けてパッケージ内で処理を行い、外部に処理結果に応じたデータを出力する。通常の方法では、外部から半導体装置（ＬＳＩ）内の処理を観察するのは難しいため、このようなシステムＬＳＩは、秘密情報を処理するシステムを構築する上で有利である。例えば、秘密鍵をシステムＬＳＩ内に外部からアクセス不能な状態で格納し、外部から入力された公開鍵で処理されたデータを処理して正当なアクセスであるかを判定し、判定結果を外部に出力する。しかし、システムＬＳＩ内では、秘密鍵の読み出しや秘密鍵を使用した処理を行うため、その際にサイドチャネル攻撃により秘密鍵を盗まれる場合が起こり得る。そのため、このようなシステムＬＳＩは、サイドチャネル攻撃に対する耐性の高いセキュリティ回路であることが求められる。
【００１２】
サイドチャネル攻撃は、一般に、外部から電気または電磁的な衝撃をシステムＬＳＩに与えて、その際の電磁放射の変化を検出して、信号を解析することにより行われる。そのため、信号の変化に応じて発生するノイズを低減する方法の一つとして知られている位相反転回路を実装する手法が、サイドチャネル攻撃を防ぐ一手法として適用可能であると考えられる。
【００１３】
図１は、位相反転回路を実装したシステムＬＳＩの構成例を示す図であり、（Ａ）はベース回路１に対する位相反転回路の配置の基本構成を、（Ｂ）はＬＳＩ２に実装した場合を示す。
【００１４】
システムＬＳＩの仕様として本来必要な機能を実現するための回路をベース回路１とする。ベース回路１は、マスタモジュール１０と、スレーブモジュール２０と、接続回路３０と、マスタモジュール１０と接続回路３０間バス１１と、スレーブモジュール２０と接続回路３０間バス２１と、を有する。マスタモジュール１０と接続回路３０間およびスレーブモジュール２０と接続回路３０間には、データバス、アドレス信号バス、制御信号バス等が設けられるが、ここではデータバスに着目するので、バス１１および２１は、データバスである。また、後述するように、データバスは、ライトデータバスおよびリードデータバスを含む。
【００１５】
一般に、マスタモジュール１０およびスレーブモジュール２０は、それぞれ複数個設けられ、接続回路３０が、複数のマスタモジュール１０と複数のスレーブモジュール２０を接続するようにバスの接続を切り替える。ここでは、説明を簡単にするために、マスタモジュール１０およびスレーブモジュール２０が、それぞれ１個設けられる場合を例として説明する。なお、マスタモジュール１０およびスレーブモジュール２０が、それぞれ１個設けられる場合には、バスの接続を切り替えることは無いので、接続回路３０を設けなくてもよく、実施形態の構成はそのような場合にも適用可能である。さらに、バス１１および２１は、接続回路３０により接続が切り替えられるが、切り替えられた状態では、１つのつながったバスとみなすことができる。
【００１６】
位相反転回路は、各回路要素に対応して、その近傍に設けられる。図１に示すように、マスタモジュール１０とその位相反転回路である／マスタモジュール１０’が近接して設けられる。同様に、スレーブモジュール２０とその位相反転回路である／スレーブモジュール２０’ が近接して設けられ、接続回路３０とその位相反転回路である／接続回路３０’が近接して設けられる。さらに、バス１１とその位相反転回路である／バス１１’が近接して設けられ、バス２１とその位相反転回路である／バス２１’が近接して設けられる。ベース回路１の各回路要素と、その位相反転回路を実装し近傍にレイアウトすることによりノイズキャンセルされ、それによりＬＳＩ外部からの情報取得を阻止する。
【００１７】
しかし、ベース回路の全ての回路要素に対応して位相反転回路を実装するとサイドチャネル攻撃を防ぐ強度としては非常に高くなるが、回路規模が膨大になってしまう。そこで回路規模を削減するため、ベース回路の一部にだけ位相反転回路を実装することが考えられる。ベース回路において、サイドチャネル攻撃の最も標的となりやすいものはマスタモジュール１０からスレーブモジュール２０までの経路であるバス信号である。バス信号のうちのとりわけデータバスはその性質上、論理を有さず配線長が長くなりやすいため情報を取得しやすいうえ、多くのセンシティブな情報が往来する。そのため、データバスにだけ位相反転回路を実装したとしても一定の効果が得られる。
【００１８】
図２は、データバスのみに位相反転回路を実装したシステムＬＳＩの構成例を示す図であり、（Ａ）はベース回路１に対する位相反転回路の配置の基本構成を、（Ｂ）はＬＳＩ２に実装した場合を示す。図２に示すように、マスタモジュール１０とスレーブモジュール２０の間の経路の近傍に、データバスの位相反転回路４０を設ける。
【００１９】
図１と図２を比較すると、ＬＳＩパッケージ内の位相反転回路の規模は、図２の場合の方が大幅に低減されることが分かる。しかし、データバスは配線が長くなりやすいためレイアウトで必要な実装面積は大きくなってしまう。さらに、近年のデータ処理量の増大によるデータバス幅増大に伴い、やはり回路規模が膨大になってしまうため、回路規模をさらに削減することが望ましい。
【００２０】
以下に説明する実施形態のバス回路およびそのようなバス回路を搭載した半導体装置（システムＬＳＩ）では、比較的小さな規模でサイドチャネル攻撃に対する耐性を向上したデータバスが実現される。
【００２１】
図３は、第１実施形態のバス回路を搭載した半導体装置（システムＬＳＩ）の構成を示す図であり、（Ａ）はベース回路１の構成を、（Ｂ）はライトデータバスに着目した構成を、（Ｃ）はリードデータバスに着目した構成を示す。
【００２２】
図３の（Ａ）に示すように、ベース回路１は、マスタモジュール１０と、スレーブモジュール２０と、接続回路３０と、バス１１および２１と、を有する。バス１１は、マスタモジュール１０と接続回路３０の間のｎビットのデータバスである。バス２１は、スレーブモジュール２０と接続回路３０の間のｎビットのデータバスである。
【００２３】
前述のように、データバスの他にも、アドレス信号バス、制御信号バス等が設けられるが、ここではデータバスに着目するので、バス１１および２１は、データバスとして示す。さらに、マスタモジュール１０およびスレーブモジュール２０は、それぞれ複数個設けられるのが一般的であるが、ここでは説明を簡単にするために、１個のマスタモジュール１０と１個のスレーブモジュール２０を、接続回路３０で接続する場合を示す。さらに、マスタモジュール１０およびスレーブモジュール２０がそれぞれ１個の場合には、接続回路３０は設けなくてもよい。また、バス１１および２１のそれぞれは、マスタモジュール１０からスレーブモジュール２０にデータを転送するライトデータバスと、スレーブモジュール２０からマスタモジュール１０にデータを転送するリードデータバスと、を含む。ライトデータバスとリードデータバスは独立しており、データは転送方向に応じて独立して行われる。
【００２４】
図３の（Ｂ）に示すように、ライトデータバスにおいては、分割回路１３をマスタモジュール１０と接続回路３０の間に、結合回路２３を接続回路３０とスレーブモジュール２０の間に設ける。マスタモジュール１０と分割回路１３の間には、ｎビット幅のライトデータバス１２が設けられ、分割回路１３と接続回路３０の間には、ｎ／２ビット幅の２本の分割ライトデータバス１４および１５が設けられる。接続回路３０と結合回路２３の間には、ｎ／２ビット幅の２本の分割ライトデータバス２４および２５が設けられ、結合回路２３とスレーブモジュール２０の間には、ｎビット幅のライトデータバス２２が設けられる。
【００２５】
分割回路１３は、マスタモジュール１０からバス１２を介して転送されるｎビット幅のライトデータを、ｎ／２ビット幅の２つの分割ライトデータに分割して、バス１４および１５に出力する。接続回路３０は、バス１４および１５とバス２４および２５を接続する。結合回路２３は、接続回路３０からバス２４および２５を介して転送されるｎ／２ビット幅の２つの分割ライトデータを、ｎビット幅の１つのライトデータに結合して、バス２２に出力する。
【００２６】
図３の（Ｃ）に示すように、リードデータバスにおいては、結合回路１７をマスタモジュール１０と接続回路３０の間に、分割回路２７を接続回路３０とスレーブモジュール２０の間に設ける。マスタモジュール１０と結合回路１７の間には、ｎビット幅のリードデータバス１６が設けられ、結合回路１７と接続回路３０の間には、ｎ／２ビット幅の２本の分割リードデータバス１８および１９が設けられる。接続回路３０と分割回路２７の間には、ｎ／２ビット幅の２本の分割リードデータバス２８および２９が設けられ、分割回路２７とスレーブモジュール２０の間には、ｎビット幅のリードデータバス２６が設けられる。
【００２７】
分割回路２７は、スレーブモジュール２０からバス２６を介して転送されるｎビット幅のリードデータを、ｎ／２ビット幅の２つの分割リードデータに分割して、バス２８および２９に出力する。接続回路３０は、バス２８および２９とバス１８および１９を接続する。結合回路１７は、接続回路３０からバス１８および１９を介して転送されるｎ／２ビット幅の２つの分割リードデータを、ｎビット幅の１つのリードデータに結合して、バス１６に出力する。
【００２８】
ｎ／２ビット幅の２本の分割ライトデータバス１４および１５は、一方が通常のデータバスとして動作し、もう一方が通常のデータバスの位相反転回路として動作する。同様に、ｎ／２ビット幅の２本の分割ライトデータバス２４および２５は、一方が通常のデータバスとして動作し、もう一方が通常のデータバスの位相反転回路として動作する。ｎ／２ビット幅の２本の分割リードデータバス２８および２９は、一方が通常のデータバスとして動作し、もう一方が通常のデータバスの位相反転回路として動作する。ｎ／２ビット幅の２本の分割リードデータバス１８および１９は、一方が通常のデータバスとして動作し、もう一方が通常のデータバスの位相反転回路として動作する。
【００２９】
図４は、分割回路１３および結合回路２３の回路構成を示す図であり、（Ａ）が分割回路１３の回路構成を、（Ｂ）が結合回路２３の回路構成を示す。
【００３０】
図４の（Ａ）に示すように、分割回路１３は、分割器４１と、第１位相反転器４２と、第２位相反転器４３と、レジスタ４４と、第１セレクタ４５と、第２セレクタ４６と、コマンド制御部４７と、を有する。
【００３１】
分割器４１は、バス１２を介して転送されるｎビット幅のライトデータを、ｎ／２ビット幅の第１および第２分割ライトデータに分割する。第１位相反転器４２は、第１分割ライトデータの位相反転データ、すなわち第１分割ライトデータの各ビットを反転した第１分割反転ライトデータを生成する。第２位相反転器４３は、第２分割ライトデータの位相反転データ、すなわち第２分割ライトデータの各ビットを反転した第２分割反転ライトデータを生成する。レジスタ４４は、ｎビット幅のレジスタで、第２分割ライトデータおよび第２分割反転ライトデータを一時的に保持する。第１セレクタ４５は、コマンド制御回路４７の指示に応じて、分割器４１の出力する第１分割ライトデータと、レジスタ４４の出力する第２分割反転ライトデータのいずれかを選択して出力する。第２セレクタ４６は、コマンド制御回路４７の指示に応じて、第１位相反転器４２の出力する第１分割反転ライトデータと、レジスタ４４の出力する第２分割ライトデータのいずれかを選択して出力する。コマンド制御回路４７は、第１セレクタ４５および第２セレクタ４６の選択動作を制御する。
【００３２】
コマンド制御回路４７に入出力される転送制御信号は、マスタモジュール１０から意図したデータを出力するように、コマンド制御回路４７の入出力を制御すると共に、プロトコルの制御を行う。プロトコルの制御は、例えば、データ転送量の制御であり、接続回路３０においてデータ転送量を認識している場合があり、この時、転送制御信号は、例えば転送量は２倍であることをコマンド制御回路４７に通知する。コマンド制御回路４７は、接続回路３０において、通知されたデータ転送量を実現するように制御を行う。
【００３３】
図４の（Ｂ）に示すように、結合回路２３は、レジスタ５１と、結合器５２と、コマンド制御部５３と、を有する。
【００３４】
レジスタ５１は、接続回路３０からバス２４を介して転送されるｎ／２ビット幅の分割ライトデータの一方、ここでは、分割回路１３の第１セレクタ４５が出力した第１分割ライトデータまたは第２分割反転ライトデータを一時記憶する。結合器５２は、レジスタ５１の出力と、接続回路３０からバス２５を介して転送されるｎ／２ビット幅の分割ライトデータの他方、ここでは、分割回路１３の第２セレクタ４６が出力した第１分割反転ライトデータまたは第２分割ライトデータを選択する。結合器５２の出力は、ｎビット幅のライトデータバス２２に出力され、スレーブモジュール２０に転送される。コマンド制御回路５３は、レジスタ５１を制御する。
【００３５】
図５は、第１実施形態のバス回路において、ｎ＝８の場合の構成および動作を示すタイムチャートであり、（Ａ）がバス回路の構成を、（Ｂ）がタイムチャートを示す。また、図５は、分割器４１は、８ビットライトデータを上位４ビットと下位４ビットのライトデータに分割する場合である。
【００３６】
図５の（Ａ）に示すように、Ａはライトデータバス１２における８ビットライトデータを、Ｂはライトデータバス１４における４ビットライトデータを、Ｃはライトデータバス１５における４ビットライトデータを、示す。また、Ｄはライトデータバス２４における４ビットライトデータを、Ｅはライトデータバス２５における４ビットライトデータを、Ｆはライトデータバス２２における８ビットライトデータを、示す。
【００３７】
分割器４１は、マスタモジュール１０からライトデータバス１２を介して、８ビットライトデータＡを受ける。ここでは、８ビットライトデータＡ＝“１１００１０１１”であるとする。
【００３８】
分割器４１は、８ビットライトデータＡ＝“１１００１０１１”を下位４ビットのライトデータＢ＝“１０１１”と、上位４ビットのライトデータＣ＝“１１００”に分割する。第１位相反転回路４２は、ライトデータＢの反転ライトデータ＝“０１００”を生成し、第２位相反転回路４３は、ライトデータＣの反転ライトデータ＝“００１１”を生成する。
【００３９】
１回目の転送サイクルで、第１セレクタ４５はライトデータＢ＝“１０１１”を、第２セレクタ４６はライトデータＢの反転ライトデータ＝“０１００”を、それぞれ選択する。したがって、元のデータと位相反転したデータが一緒に転送されることになり、互いに打ち消しあうので、電磁放射が低減される。
【００４０】
２回目の転送サイクルで、第１セレクタ４５はライトデータＣの反転ライトデータ＝“００１１”を、第２セレクタ４６はライトデータＣ＝“１１００”を、それぞれ選択する。したがって、元のデータと位相反転したデータが一緒に転送されることになる。
【００４１】
以上のように、第１実施形態では、８ビットのライトデータを、２回に分けて転送し、１回目には、下位４ビットのデータとその反転データを一緒に転送し、２回目には、上位４ビットのデータとその反転データを一緒に転送する。言い換えれば、１回目には、第１分割ライトデータと第１分割反転ライトデータが、２回目には、第２分割ライトデータと第２分割反転ライトデータが、転送される。
【００４２】
接続回路３０は、分割ライトデータバス１４および１５を、分割ライトデータバス２４および２５に接続するので、上記の転送データは、そのまま結合回路２３に入力する。したがって、元のデータと位相反転したデータが一緒に転送されることになり、互いに打ち消しあうので、分割回路１３から接続回路３０を介して結合回路２３に至るバスからの電磁放射が低減される。
【００４３】
結合回路２３では、レジスタ５１が、１回目のサイクルで転送されたライトデータＢ＝“１０１１”を一時的に保持する。ライトデータＢの反転ライトデータ＝“０１００”は、受信しても使用されない。結合器５２は、２回目のサイクル時に、ライトデータＢ＝“１０１１”と、２回目のサイクルで転送されたライトデータＣ＝“１１００”を結合して８ビットのライトデータＦ＝“１１００１０１１”を生成し、スレーブモジュール２０に出力する。
【００４４】
リードデータバスは、ライトデータバスと同じ構成を有し、同じように動作する。具体的には、上記の説明で、マスタモジュール１０とスレーブモジュール２０を入れ替えたものになるので、説明は省略する。
【００４５】
上記の例は、ｎ＝８の場合で、ビット幅が偶数の場合であったが、ビット幅が奇数の場合は１ビットを補完して対応することができる。また、上記の例では、ビット幅を上位ビットと下位ビットに分割したが、分割する方法には制限はなく、例えば奇数ビットと偶数ビットに分割してもよく、分割回路１３で分割方法を決めればよい。分割したデータバス同士を近傍にレイアウトすることによりノイズキャンセルされ、サイドチャネル攻撃を防ぐことができる。特に、元のデータとその反転データの対応するビット線を近接して配置することが望ましく、例えば、データバスを２層で形成する場合には、元のデータとその反転データの対応するビット線を上下に配置する。
【００４６】
第１実施形態では、図１および図２に示した構成に比べて、転送速度は低下するが、バス回路の部分に小規模のハードウエアを追加するだけで、サイドチャネル攻撃に対する耐性を向上することができる。
【００４７】
第２実施形態のバス回路では、分割回路１３および結合回路２３は、制御信号を与えることで、２つの分割データバスの一方が通常データバスとして他方が位相反転回路として動作するか、２つとも通常データバスとして動作するかを切り替えることができる。これにより、セキュリティを必要としない転送のときには転送効率を維持することができる。
【００４８】
図６は、第２実施形態のバス回路を搭載した半導体装置の分割回路１３の構成を示す図である。また、図７は、第２実施形態のバス回路を搭載した半導体装置の結合回路２３の構成を示す図である。第２実施形態のバス回路は、分割回路１３および結合回路２３以外の部分は第１実施形態と同じである。
【００４９】
第２実施形態における分割回路１３は、第３セレクタ４８が追加されていることが、図４の（Ａ）に示した第１実施形態の分割回路１３と異なる。また、第２実施形態における結合回路２３は、セレクタ５４が追加されていることが、図４の（Ｂ）に示した第１実施形態の結合回路２３と異なる。第３セレクタ４８およびセレクタ５４は、制御信号により選択状態が制御される。制御信号は、バスシステムであれば、マスタモジュール１０から出力されるバスインターフェース（ＩＦ）中の信号であっても、別回路から生成された信号であってもよい。マスタモジュール１０から出力されるバスＩＦ中の信号としては、宛先情報、差出元情報、パケットのセキュリティ属性やユーザ指定などを使用することができる。別回路としては、レジスタ設定や近傍のノイズ状況を見て制御する回路などを使用する。
【００５０】
位相反転回路を有効とする時には、分割回路１３の第３セレクタ４８は、第１位相反転回路４２の出力を選択してセレクタ４６に出力する。この場合の回路構成は、図４の（Ａ）と実質的に同じであり、第２実施形態の分割回路１３は、第１実施形態と同様に動作する。位相反転回路を無効とする時には、分割回路１３の第３セレクタ４８は、分割器４１から出力されるｎ／２ビットの第２分割ライトデータを選択する。これにより、ｎビットのライトデータバス１２のデータは、そのままｎ／２ビットの２つの分割ライトデータバス１４および１５に１回の転送動作で転送されることになり、実質的にｎビットのライトデータがそのまま通過する。
【００５１】
図８は、第２実施形態において、ｎ＝８の場合で、位相反転回路を無効とした時の構成および動作を示すタイムチャートであり、（Ａ）がバス回路の構成を、（Ｂ）がタイムチャートを示す。上記のように、位相反転回路を有効とする時は、図５と同じである。
【００５２】
図８の（Ｂ）に示すように、分割回路１３において、分割前の８ビットのライトデータＡ＝“１１００１０１１”は、２つの４ビットのライトデータＢ＝“１１００”およびライトデータＣ＝“１０１１”に分割されるが、並列に転送される。結合回路２３において、受信された２つの４ビットのライトデータライトデータＤ＝“１１００”およびライトデータＥ＝“１０１１”は、８ビットのライトデータＦ＝“１１００１０１１”に結合されて出力される。
【００５３】
リードデータバスは、ライトデータバスと同じ構成を有し、同じように動作する。具体的には、上記の説明で、マスタモジュール１０とスレーブモジュール２０を入れ替えたものになるので、説明は省略する。
【００５４】
以上のように、第２実施形態では、制御信号によって、位相反転回路を機能させない通常データバスとして動作するか、位相反転回路を機能させるかを切り替えることができる。
【００５５】
データの伝送においては、パリティビットを付加することにより、エラーの発生検出やエラー訂正が行えることが知られている。第３実施形態のバス回路では、転送データにパリティビットを付加して、エラー検出およびエラー訂正を行う。
【００５６】
図９は、第３実施形態のバス回路を搭載した半導体装置の分割回路１３の構成を示す図である。図１０は、パリティ(Parity)追加回路の回路構成を示す図である。さらに、図１１は、第３実施形態のバス回路を搭載した半導体装置の結合回路２３の構成を示す図である。
【００５７】
第３実施形態における分割回路１３は、パリティ(Parity)追加回路４９が追加されていることが、図６に示した第２実施形態の分割回路１３と異なる。また、第３実施形態における結合回路２３は、エラー(E)検出・エラー(E)訂正回路５５が追加されていることが、図７に示した第２実施形態の結合回路２３と異なる。さらに、分割回路１３から結合回路２３に至るデータバスには、パリティビットを伝送するデータラインが追加される。
【００５８】
パリティ追加回路４９は、第１セレクタ４５および第２セレクタ４６の出力するｎ／２ビットの２つの分割ライトデータからパリティビットを生成して出力する。
【００５９】
パリティ追加回路４９は、図１０に示すように、ＸＯＲ回路６１と、ＸＯＲ回路６２と、反転回路（ＮＯＴ）６３と、を有する。ＸＯＲ回路６１は、分割ライトデータバス１４に出力される分割ライトデータのＸＯＲを演算することで、パリティビットを生成する。ＸＯＲ回路６２は、分割ライトデータバス１４に出力される分割ライトデータのＸＯＲを演算することで、パリティビットを生成する。ＸＯＲ回路６１およびＸＯＲ回路６２の生成するパリティビットは、両方ともｅｖｅｎパリティなので、ＸＯＲ回路６１の生成したパリティビットを反転回路（ＮＯＴ）６３で反転してｏｄｄパリティとする。
【００６０】
図１１に示すように、結合回路２３では、エラー検出・エラー訂正回路５５が、ライトデータバス６４および６５のライトデータを受信し、レジスタ５１、結合器５２およびセレクタ５４に出力するように配置される。
【００６１】
第３実施形態では、第２実施形態と同様に、位相反転回路を有効にするか無効にするかの切替が可能である。位相反転回路を無効にする場合には、エラー検出・エラー訂正回路５５は、コマンド制御回路５３からの制御信号に応じて、ライトデータバス６４および６５のライトデータをそのまま出力し、エラー訂正は行わない。
【００６２】
コマンド制御回路５３から位相反転されていることが指示された場合は、エラー検出・エラー訂正回路５５は、エラー検出およびエラー訂正処理を行う。エラー検出・エラー訂正回路５５は、ライトデータバス６４および６５のライトデータについて、パリティ追加回路４９と同様の処理を行ってパリティビットを生成し、入力パリティビットと一致するか比較する。エラー検出・エラー訂正回路５５は、一致している場合にはそのままライトデータを出力し、一方が不一致の場合は、一致している方のデータバスの値をビット反転させて出力する。このように、一致した方の値を使用することでエラー訂正される。両方が不一致の場合には、エラー検出・エラー訂正回路５５は、エラー検出信号（図示せず）を出力する。
【００６３】
図１２は、第３実施形態において、ｎ＝８の場合で、位相反転回路を有効とした時の構成および動作を示すタイムチャートであり、（Ａ）がバス回路の構成を、（Ｂ）がタイムチャートを示す。
図１２の（Ｂ）のタイムチャートは、図５の（Ｂ）と類似しているが、パリティビットが付加されることが異なる。
【００６４】
位相反転回路が有効の場合には、分割回路１３の第１セレクタ４５と第２セレクタ４６は、４ビットの分割ライトデータと４ビットの分割反転ライトデータを順に出力する。パリティ追加回路４９は、上記の方法で分割ライトデータと分割反転ライトデータのパリティビットを生成し、パリティビットを追加したライトデータを出力する。
【００６５】
エラー検出・エラー訂正回路５５は、パリティビットが追加されたライトデータを受信する。図１２では、２回目に転送された第２分割ライトデータ“１１００”にエラーが発生して、“１１１０”に変化している例が示されている。エラー検出・エラー訂正回路５５は、ライトデータについてパリティ追加回路４９と同様の処理を行ってパリティビットを生成し、入力パリティビットと一致するか比較することで”１１１０”にエラーが発生していることを検出する。一方、第２反転分割ライトデータ”００１１”についてはエラーが発生していないため、第２反転分割ライトデータ”００１１”をビット反転し、”１１００”とすることでエラー訂正が行える。エラー検出・エラー訂正回路５５は、エラー訂正したライトデータを出力する。
【００６６】
パリティビット追加によるビットの追加方法について制限はなく、データバス幅を拡張する方法や、データバスに這わせる信号を別途用意する方法など、実装方法によって決めることができる。分割されたデータバス幅が奇数の場合は両方のデータバスにoddパリティあるいはevenパリティのうち同じものを使用し、偶数の場合はデータバス毎に異なるパリティを使用する。これにより、データバス毎にパリティビットの値が相反するものとなり、パリティビットにおいても位相反転したように実装され、サイドチャネル攻撃を防ぐことができる。また、エラー検出・訂正のみの機能に注目する場合には、分割されたデータバスのうちの一方だけにパリティビットを実装するだけでも実現することができる。
【００６７】
以上説明した第１から第３実施形態では、ベース回路に対し、データバスを分割し、分割回路１３、結合回路２３の追加を行うことのみで位相反転回路を実装でき、分割したデータバスを近傍にレイアウトすることでサイドチャネル攻撃を防ぐことができる。これによる回路規模の増加は少ない。
【００６８】
転送データごとに、データバスが位相反転回路として動作するかどうかを制御信号によって切り替えができ、セキュリティを必要としない転送のときには転送効率を維持できる。
【００６９】
分割された各データバスにパリティビットを追加することで、分割されたデータバス上における特定ビットのエラー検出およびエラー訂正ができる。
【実施例１】
【００７０】
以上、第１から第３実施形態を説明したが、第３実施形態をARM社のAMBA AXIシステムに適用した実施例１を、以下に説明する。
図１３は、実施例１のシステムを示す図であり、（Ａ）がライトデータバスを、（Ｂ）がリードデータバスを、示す。
【００７１】
AMBA AXIシステムは、マスタモジュール１０と、スレーブモジュール２０と、マスタモジュール１０とスレーブモジュール２０を接続するインターコネクト３１と、を有する。インターコネクト３１が、接続回路に対応する。一般に、マスタモジュール１０およびスレーブモジュール２０は、それぞれ複数個設けられ、インターコネクト３１が、複数のマスタモジュール１０と複数のスレーブモジュール２０を接続するようにバスの接続を切り替える。
【００７２】
ここでは、データバス幅が３２ビット、制御信号としてAXIのセキュリティ属性を表す信号であるAWPROT[0]およびARPROT[0]を使用し、パリティビットとしてWUSER[1:0]およびRUSER[1:0]を使用する。
【００７３】
まず、ライトデータ転送の動作順序を説明する。
（１）マスタモジュール１０から３２ビットデータサイズのライトデータ転送が発生し、AXIバス信号とWDATAがマスタモジュール１０から転送される。
（２）分割回路１３が、この転送で位相反転回路として動作するかどうかをAWPROT[0]によって判定する。
【００７４】
（３）上記の判定結果が位相反転回路として動作しない判定だった場合は、分割回路１３においてAXIバス信号およびWDATAに対しては何も行わず、そのまま出力する。上記の判定結果が位相反転回路として動作する判定だった場合は、転送データ回数が増加することをAXIバス信号中のAWチャネル信号にて指定する。WDATAは通常データと位相反転データの組み合わせから1つのデータが構成され、２回に分けてデータ転送を行う。
【００７５】
（４）パリティビット追加回路４９において、各WDATAにパリティビットとしてWUSER[0]およびWUSER[1]を付加し、インターコネクト３１へ転送する。
（５）インターコネクト３１からAXIバス信号とWDATAおよびWUSERが転送される。
（６）結合回路２３およびエラー検出・訂正回路５５において、転送データが位相反転回路として動作しているかどうかをAXI信号に含まれる制御信号によって判定する。
【００７６】
（７）上記の判定結果が位相反転回路として動作している判定だった場合は、エラー検出・訂正回路５５ではWUSERとWDATAを使ってエラー検出およびエラー訂正を行う。
（８）上記の判定結果が位相反転回路として動作していない判定だった場合は、結合回路２３ではAXI信号およびWDATAは何もされずそのままスレーブモジュール２０へ転送される。上記の判定結果が位相反転回路として動作している判定だった場合は、結合回路２３では分割回路５５で増加した転送データ数が元に戻るようAXIバス信号にて指定し、２つのWDATAから通常データのみ抽出し、結合した１つのWDATAを生成する。
（９）スレーブモジュール２０が３２ビットデータサイズのライト転送を受信する。
【００７７】
次に、リードデータ転送の動作順序を説明する。
（１）マスタモジュール１０から３２ビットデータサイズのリード転送が発生し、AXIバス信号がマスタモジュール１０から転送される。
（２）結合回路１７およびエラー検出・訂正回路７１において、この転送が位相反転回路として動作するかどうかをARPROT[0]によって判定する。
（３）上記の判定結果が位相反転回路として動作しない判定だった場合は、分割回路２７においてAXIバス信号はなにもされない。上記の判定結果が位相反転回路として動作する判定だった場合は、転送データ回数が増加することをAXIバス信号中のARチャネル信号にて指定する。
【００７８】
（４）分割回路２７において、この転送が位相反転回路として動作するかをAXIバス信号に含まれる制御信号によって判定する。
（５）上記の判定結果が位相反転回路として動作しない判定だった場合は、AXIバス信号は何もされずそのままスレーブモジュール２０へ転送される。上記の判定結果が位相反転回路として動作する判定だった場合は、結合回路１７で増加した転送データ回数が元に戻るようAXIバス信号にて指定する。
（６）スレーブモジュール２０が３２ビットデータサイズのリード転送を受信し、スレーブモジュール２０からRDATAが転送される。
【００７９】
（７）分割回路２７において、（４）で行った判定結果が位相反転回路として動作しない判定だった場合は、RDATAは何もされない。（４）で行った判定結果が位相反転回路として動作する判定だった場合は、RDATAは通常データと位相反転データの組み合わせから1つのデータが構成され、２回に分けてデータ転送を行う。
（８）パリティビット追加回路７２において、各RDATAにパリティビットとしてRUSER[0]およびRUSER[1]を付加し、インターコネクト３１へ転送される。
【００８０】
（９）インターコネクト３１からAXIバス信号とRDATAおよびRUSERが転送される。
（１０）（２）で行った判定結果が位相反転回路として動作している判定だった場合は、エラー検出・エラー訂正回路７１ではRUSERとRDATAを使ってエラー検出およびエラー訂正を行う。
【００８１】
（１１）（２）で行った判定結果が位相反転回路として動作しない判定だった場合は、結合回路１７ではRDATAは何もされずそのままマスタモジュール１０へ転送される。（２）で行った判定結果が位相反転回路として動作する判定だった場合は、結合回路１７では2つのRDATAから通常データのみ抽出し、結合した１つのRDATAを生成する。
（１２）マスタモジュール１０が３２ビットデータサイズのリードデータを受信する。
【００８２】
位相反転回路として動作するかを表す制御信号については、AXIバス信号中からはAWPROT[0]/ARPROT[0]以外の信号を使用することが可能である。例えば、AWADDR / ARADDR (特定のアドレスのときに動作)、AWID / ARID (特定のID値のときに動作)、AWUSER / ARUSER (ユーザ指定時に動作) などを使用することができる。
【００８３】
以上、転送データを２分割して位相反転データを対にして２回に分けて転送する例を説明したが、転送データを３以上の複数に分割しても良い。
また、データ対は、対応するビット線が近接して、すなわち近傍に配置されるが、その配置には各種の変形例が可能である。
【００８４】
図１４は、データ対の配置例を示す図であり、（Ａ）はデータ対を上下に配置した例を、（Ｂ）はデータ対を水平に並べて配置した例を、（Ｃ）は水平方向に１つずつ入れ子に配置した例を、（Ｄ）は（Ｃ）の断面を、それぞれ示す図である。
【００８５】
図１４の（Ａ）の例では、データ対の一方を伝送するバス８１および他方を伝送するバス８１’が、対応するビット線が上下に隣接するように配置される。
図１４の（Ｂ）の例では、データ対の一方を伝送するバス８１および他方を伝送するバス８１’が、水平方向に並べて配置される。この場合、対応するビット線は、バス８１またはバス８１’の分離れて配置されることになるが、バス全体としては伝送されるデータは全体として逆相であり、サイドチャネル攻撃に対する耐性が向上する。
【００８６】
図１４の（Ｃ）の例では、データ対の一方を伝送するバス８１のビット線81[0], 81[1], 81[2],…, 81[n-1]と、他方を伝送するバス８１’のビット線81[0]’, 81[1]’, 81[2]’,…, 81[n-1]’が、水平方向に１つずつ入れ子に配置される。この場合のバスの断面では、図１４の（Ｄ）に示すようにビット線が配置される。この例では、図１４の（Ｂ）の例に比べて、サイドチャネル攻撃に対する耐性が一層向上する。
【００８７】
データ対、すなわちデータバスを近傍に配置するという場合には、図１４に示した変形例等がすべて含まれるものとする。
【００８８】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものである。特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【符号の説明】
【００８９】
１０    マスタモジュール
１３    分割回路
１７    結合回路
２０    スレーブモジュール
２３    結合回路
２７    分割回路
３０    接続回路
３１    インターコネクト
【図１】
2013222285.tif 000003
【図２】
2013222285.tif 000004
【図３】
2013222285.tif 000005
【図４】
2013222285.tif 000006
【図５】
2013222285.tif 000007
【図６】
2013222285.tif 000008
【図７】
2013222285.tif 000009
【図８】
2013222285.tif 000010
【図９】
2013222285.tif 000011
【図１０】
2013222285.tif 000012
【図１１】
2013222285.tif 000013
【図１２】
2013222285.tif 000014
【図１３】
2013222285.tif 000015
【図１４】
2013222285.tif 000016