(57)【要約】【課題】  処理能力を維持したまま回路面積の削減化が図られた処理回路を提供する。【解決手段】  １２８ビット幅のパラレル信号（平文）を入力し、分周器１０からの低速のクロックＣＬＫ＿Ｇに同期して１２８ビット幅全幅についてパラレルに処理を実行するレジスタ１１，シフトロウズ演算器１３，ミックスコラムズ演算器１４，アドラウンドキー演算器１５，レジスタ１６と、１２８ビット幅をＮに分割したときの１２８／Ｎビット幅単位で、クロックＣＬＫ＿Ｇよりも高速のクロックＣＬＫ＿Ｌに同期して処理を実行する共有型Ｓ―Ｂｏｘを具備し、１２８ビット幅のパラレル信号を１２８／Ｎビット幅ずつに分けて上記共有型Ｓ―Ｂｏｘに処理を複数回繰り返させるサブバイト演算器１２とを備えた。【選択図】  図１
2009251752.tif 000002
【特許請求の範囲】
【請求項１】
所定の第１のビット幅のパラレル信号を入力し、所定の第１のクロックに同期して該第１のビット幅全幅についてパラレルに処理を実行する第１の演算器と、
前記第１のビット幅を複数に分割したときの第２のビット幅単位で、前記第１のクロックよりも高速の第２のクロックに同期して処理を実行する演算処理部を具備し、前記第１のビット幅と同一のビット幅のパラレル信号を入力し該パラレル信号を前記第２のビット幅ずつに分けて前記演算処理部に処理を複数回繰り返させる第２の演算器とを備えたことを特徴とする処理回路。
【請求項２】
前記第２のクロックを分周して第１のクロックを生成する分周器を備えたことを特徴とする請求項１の処理回路。
【請求項３】
前記演算処理部が、前記第２のビット幅の入力を受けてテーブルを参照し該入力に対応した出力を得ることにより入力を出力に変換する処理を実行するものであることを特徴とする請求項１の処理回路。
【請求項４】
前記第２の演算器は、該第２の演算器に入力されてきた前記第１のビット幅のパラレル信号を前記演算処理部での一回の処理単位である第２のビット幅に分けて該演算処理部に順次に渡すパラレル／シリアル変換部と、前記演算処理部の処理が複数回繰り返されたときの該演算処理部の複数回のシリアルの出力を合わせてパラレル信号として出力するシリアル／パラレル変換部を備えたことを特徴とする請求項１の処理回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算器を備えた処理回路に関する。
【背景技術】
【０００２】
従来より、複数の演算器を備えた処理回路を有する集積回路が知られている。このような集積回路は、一つまたは複数の並列動作する同一の演算器群を持つ場合が多い。演算器群は、処理回路の処理能力を高めることができるものの、各演算器の回路面積が大きい場合、その回路面積は処理回路全体に対して大きな割合になる場合もある。この解決策の一つとして、演算器群を構成する演算器を逐次動作させる手法が知られている。しかし、この手法では、回路面積の削減化は可能であるものの、逐次動作により処理能力が低下するという問題がある。ここで、処理能力と回路面積とはトレードオフの関係にあるので、集積回路を搭載する機器の制約条件に応じて、どちらを優先させるかのかを検討する必要がある。
【０００３】
近年、高性能かつ小型な携帯機器(スマートカード、ＩＣカードなど)が急速に普及している。これらの機器は搭載される集積回路に対して面積の削減と、処理能力の維持または向上との双方を要求する。このように相反する要求に対して、演算器群を構成する演算器自体の小面積化、および処理能力向上のためのパイプライン化の適用などの複合的な課題を考慮する必要がある。
【０００４】
ここで、複数の演算器を備えた処理回路の一つに、ＡＥＳ(Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ)回路がある。このＡＥＳ回路は、次世代米国標準の共通鍵暗号方式を採用した回路である。以下、図７を参照して説明する。
【０００５】
図７は、従来のＡＥＳ回路のブロック図である。
【０００６】
図７に示すＡＥＳ回路１００には、レジスタ１０１と、サブバイト（ＳｕｂＢｙｔｅｓ）演算器１０２と、シフトロウズ（ＳｈｉｆｔＲｏｗｓ）演算器１０３と、ミックスコラムズ（ＭｉｘＣｏｌｕｍｎｓ）演算器１０４と、アドラウンドキー（ＡｄｄＲｏｕｎｄＫｅｙ）演算器１０５と、レジスタ１０６とが備えられている。アドラウンドキー演算器１０５には暗号鍵が入力される。
【０００７】
ここで、ＡＥＳ回路１００に、暗号化を行なう対象である１２８ビット幅のパラレル信号（平文と称する)が入力される。また、クロックＣＬＫ＿Ｇも入力される。入力された平文は、クロックＣＬＫ＿Ｇに同期してレジスタ１０１に格納され、次いでサブバイト演算器１０２，シフトロウズ演算器１０３，ミックスコラムズ演算器１０４で順次に演算処理が施され、さらにアドラウンドキー演算器１０５に入力される。アドラウンドキー演算器１０５は、入力された信号に対して暗号鍵を用いて暗号化処理してレジスタ１０６を経由して１２８ビット幅の暗号文として出力するとともに、この暗号文をレジスタ１０１に帰還する。このように、ＡＥＳ回路１００は、暗号化を行なう対象である平文(１２８ビット)に対して、暗号鍵を用いて４種類の演算(ＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ、ＭｉｘＣｏｌｕｍｎｓ、ＡｄｄＲｏｕｎｄｋｅｙ)を繰り返し行なって、暗号文(１２８ビット)を得る。ここで、４種類の演算は、クロックＣＬＫ＿Ｇの１サイクル毎に行なわれる。
【０００８】
図８は、図７に示すサブバイト演算器のブロック図、図９は、図８に示すＳ−Ｂｏｘ回路の概念図である。
【０００９】
図８に示すサブバイト演算器１０２には、１６個のＳ−Ｂｏｘ回路１０７が備えられている。これら１６個のＳ−Ｂｏｘ回路１０７は並列に接続されている。サブバイト演算器１０２に入力された信号（１２８ビット）は、８ビット単位に分割されて各Ｓ−Ｂｏｘ回路１０７に各８ビット単位で入力される。
【００１０】
Ｓ−Ｂｏｘ回路１０７は、図９に示すＳ−Ｂｏｘテーブル１０８を有する。このＳ−Ｂｏｘテーブル１０８は、入力された８ビットの信号に対して、上位４ビットの組み合わせによる１６ビットと下位４ビットの組み合わせによる１６ビットとの積である１６×１６＝２５６通りのデータ変換を行なうテーブルであり、例えば、入力された８ビットの信号が０×００（０は、１６個のＳ−Ｂｏｘ回路１０７のうちの最初のＳ−Ｂｏｘ回路１０７を示し、００は８ビットの信号のうちの上位４ビット，下位４ビットがともに０であることを示す）の場合、このＳ−Ｂｏｘテーブル１０８からは、０×６３（０は、１６個のＳ−Ｂｏｘ回路１０７のうちの最初のＳ−Ｂｏｘ回路１０７を示し、６３は８ビットの信号００に対応するデータ（変換データ）である）の変換データが出力される。
【００１１】
一般的にＳ−Ｂｏｘ回路１０７は、Ｓ−Ｂｏｘテーブル１０８をハードウェア記述言語のｃａｓｅ文などで記述し、論理合成により生成される。このＳ−Ｂｏｘ回路１０７は、換言すれば、２５６入力１出力のマルチプレクサと等価な組み合わせ回路である。尚、レジスタ１０１，１０６，シフトロウズ演算器１０３，ミックスコラムズ演算器１０４，アドラウンドキー演算器１０５は、既知であるので、ここでの説明は省略する。
【００１２】
この従来のＡＥＳ回路１００では、上述したように、サブバイト演算器１０２の内部に、並列に接続された１６個のＳ−Ｂｏｘ回路１０７が備えられているため、回路面積が大きいという欠点を有する。
【００１３】
一般に、ＡＥＳ回路では、暗号強度は高いものの、計算量が大きいため、現在、ＡＥＳ回路の処理能力を高めるために回路化され、その回路はセキュリティ性を要求する小型携帯機器へ搭載されている。しかしながら、ＡＥＳ回路は回路面積が大きく、小型携帯機器への搭載が困難である場合もある。その要因は、上述したように、サブバイト演算器内に備えられた複数個(一般的には１６個)のＳ−Ｂｏｘ回路（セレクタと等価な回路）にある。ＡＥＳ回路において、Ｓ−Ｂｏｘ回路アレイは回路面積および遅延時間がともに大きい。そこで、Ｓ−Ｂｏｘ回路アレイを構成するＳ−Ｂｏｘ回路自体の小面積化、処理能力維持のためのパイプライン化の適用などの提案がなされている（例えば、特許文献１、特許文献２参照）。
【特許文献１】特開２００５―２１５６６８８号公報
【特許文献２】特開２００５−１０００８５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
一般に、処理回路に備えられた演算器を逐次動作させると、処理回路の処理能力が低下するという問題がある。ここで、演算器自体を計算速度が遅い単純な回路構成に変更して小面積化を行なうと、回路の遅延量が大きくなり、やはり処理能力が低下するという問題がある。さらに、演算器自体の小面積化が困難である場合もある。
【００１５】
このような問題に対して、処理能力を維持するために、複数の演算器を備えた処理回路にパイプライン化を適用しようとすると、その処理回路にはパイプライン制御用回路を持たせる必要がある。従って、処理回路が複雑になり、また回路設計の難易度が高まるという問題が発生する。
【００１６】
本発明は、上記事情に鑑み、処理能力を維持したまま回路面積の削減化が図られた処理回路を提供することを目的とする。
【課題を解決するための手段】
【００１７】
上記目的を達成する本発明の処理回路は、
所定の第１のビット幅のパラレル信号を入力し、所定の第１のクロックに同期してその第１のビット幅全幅についてパラレルに処理を実行する第１の演算器と、
上記第１のビット幅を複数に分割したときの第２のビット幅単位で、上記第１のクロックよりも高速の第２のクロックに同期して処理を実行する演算処理部を具備し、上記第１のビット幅と同一のビット幅のパラレル信号を入力しそのパラレル信号を上記第２のビット幅ずつに分けて上記演算処理部に処理を複数回繰り返させる第２の演算器とを備えたことを特徴とする。
【００１８】
本発明の処理回路は、入力されるパラレル信号の第１のビット幅よりも小さい第２のビット幅単位で且つ高速の第２のクロックに同期して複数回繰り返して処理を実行する演算処理部を具備する第２の演算器を備えたものである。このため、第２の演算器に具備される演算処理部は、小さなビット幅を有する演算処理部で済む。また、演算処理部では、高速のクロックで複数回処理が実行されるため、処理能力を維持することができる。従って、処理能力を維持したまま回路面積の削減化が図られる。
【００１９】
ここで、上記第２のクロックを分周して第１のクロックを生成する分周器を備えたことが好ましい。
【００２０】
このようにすると、第１のクロックを簡単に生成することができる。
【００２１】
また、上記演算処理部が、上記第２のビット幅の入力を受けてテーブルを参照しその入力に対応した出力を得ることにより入力を出力に変換する処理を実行するものであることも好ましい態様である。
【００２２】
このようにすると、演算処理部では、入力を出力に簡単に変換することができる。
【００２３】
さらに、上記第２の演算器は、その第２の演算器に入力されてきた上記第１のビット幅のパラレル信号を上記演算処理部での一回の処理単位である第２のビット幅に分けてその演算処理部に順次に渡すパラレル／シリアル変換部と、上記演算処理部の処理が複数回繰り返されたときのその演算処理部の複数回のシリアルの出力を合わせてパラレル信号として出力するシリアル／パラレル変換部を備えたことも好ましい。
【００２４】
このようにすると、第２の演算器に入力された第１のビット幅のパラレル信号を第２のビット幅に簡単に変換することができるとともに、第２の演算器の演算処理部からの複数回のシリアルの出力をパラレル信号に簡単に変換することができる。
【発明の効果】
【００２５】
本発明によれば、処理能力を維持したまま回路面積の削減化が図られた処理回路を提供することができる。
【発明を実施するための最良の形態】
【００２６】
以下、図面を参照して本発明の実施の形態を説明する。
【００２７】
図１は、本発明の処理回路の一実施形態であるＡＥＳ回路のブロック図である。
【００２８】
図１に示すＡＥＳ回路１には、分周器１０と、レジスタ１１と、サブバイト（ＳｕｂＢｙｔｅｓ）演算器１２と、シフトロウズ（ＳｈｉｆｔＲｏｗｓ）演算器１３と、ミックスコラムズ（ＭｉｘＣｏｌｕｍｎｓ）演算器１４と、アドラウンドキー（ＡｄｄＲｏｕｎｄＫｅｙ）演算器１５と、レジスタ１６とが備えられている。ここで、シフトロウズ演算器１３と、ミックスコラムズ演算器１４と、アドラウンドキー演算器１５とが、本発明にいう第１の演算器に相当する。また、サブバイト演算器１２が、本発明にいう第２の演算器に相当する。
【００２９】
分周器１０には、高速のクロックＣＬＫ＿Ｌ（本発明にいう第２のクロックの一例に相当）が入力される。この分周器１０は、高速のクロックＣＬＫ＿Ｌを分周して低速のクロックＣＬＫ＿Ｇ（本発明にいう第１のクロックの一例に相当）を生成する。
【００３０】
ＡＥＳ回路１には、暗号化を行なう対象である１２８ビット幅のパラレル信号（本発明にいう第１のビット幅のパラレル信号の一例に相当するものであり、ここでは平文と称する）が入力される。このＡＥＳ回路１においても、前述した図７に示すＡＥＳ回路１００と同様に、入力された平文に対して、クロックＣＬＫ＿Ｇの１サイクルについて、アドラウンドキー演算器１５に入力された暗号鍵を用いた４種類の演算(ＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ、ＭｉｘＣｏｌｕｍｎｓ、ＡｄｄＲｏｕｎｄｋｅｙ)が１回行なわれる。
【００３１】
ただし、本実施形態では、サブバイト演算器１２は高速のクロックＣＬＫ＿Ｌに同期して動作し、その他の回路（レジスタ１１，１６，シフトロウズ演算器１３，ミックスコラムズ演算器１４，アドラウンドキー演算器１５）は低速のクロックＣＬＫ＿Ｇに同期して動作する。
【００３２】
図２は、図１に示すサブバイト演算器のブロック図である。
【００３３】
図２に示すサブバイト演算器１２には、パラレル／シリアル変換部１２ａと、シリアル／パラレル変換部１２ｂと、１６／Ｎ個の共有型Ｓ−Ｂｏｘ回路１７（本発明にいう演算処理部の一例に相当）とが備えられている。
【００３４】
パラレル／シリアル変換部１２ａは、サブバイト演算器１２に入力されてきた１２８ビット幅のパラレル信号を、１６／Ｎ個の共有型Ｓ−Ｂｏｘ回路１７での一回の処理単位である１２８／Ｎのビット幅に分けて、これらの共有型Ｓ−Ｂｏｘ回路１７に順次に渡す。
【００３５】
シリアル／パラレル変換部１２ｂは、１６／Ｎ個の共有型Ｓ−Ｂｏｘ回路１７の処理が複数回繰り返されたときの共有型Ｓ−Ｂｏｘ回路１７の複数回（１６／Ｎ回）のシリアルの出力（１２８／Ｎのビット幅の出力）を合わせて１２８ビット幅のパラレル信号として出力する。
【００３６】
１６／Ｎ個の共有型Ｓ−Ｂｏｘ回路１７には、高速のクロックＣＬＫ＿Ｌが入力される。また、これら共有型Ｓ−Ｂｏｘ回路１７は、１２８／Ｎのビット幅（本発明にいう第２のビット幅の一例に相当）単位で、高速のクロックＣＬＫ＿Ｌに同期して処理を実行する。例えば、Ｎ＝４の場合は、ビット幅は３２ビット幅となり、この３２ビット幅単位で、４つの共有型Ｓ−Ｂｏｘ回路１７が高速のクロックＣＬＫ＿Ｌに同期して４回処理を高速に実行する。
【００３７】
図３は、図２に示す共有型Ｓ−Ｂｏｘ回路のブロック図である。
【００３８】
図３に示す共有型Ｓ−Ｂｏｘ回路１７には、パラレル／シリアル変換部１８と、Ｓ−Ｂｏｘ（ＳＲＡＭ）１９と、シリアル／パラレル変換部２０とが備えられている。
【００３９】
パラレル／シリアル変換部１８は、上記パラレル／シリアル変換部１２ａからの１２８／Ｎのビット幅のパラレル信号ｄａｔａ＿ｉｎを、８ビットの信号ｂｏｘ＿ｉｎに変換する。
【００４０】
Ｓ―Ｂｏｘ１９は、パラレル／シリアル変換部１８からの８ビットの信号ｂｏｘ＿ｉｎの入力を受けて、後述するテーブルを参照し、その入力に対応した出力を得ることにより入力を出力に変換する処理を実行する。
【００４１】
シリアル／パラレル変換部２０は、Ｓ―Ｂｏｘ１９からの８ビットの信号ｂｏｘ＿ｏｕｔを、１２８／Ｎのビット幅のパラレル信号ｄａｔａ＿ｏｕｔに変換する。
【００４２】
図４は、Ｓ―Ｂｏｘ１９により参照されるテーブルを示す図である。
【００４３】
Ｓ−Ｂｏｘ回路１９は、１個のＳＲＡＭを有する。このＳＲＡＭは、Ｓ−Ｂｏｘテーブルを保持する。このＳ−Ｂｏｘテーブルは、入力された８ビットの信号ｂｏｘ＿ｉｎに対して、上位４ビットの組み合わせによる１６ビット（ｘ）と下位４ビットの組み合わせによる１６ビット（ｙ）との組み合わせである１６×１６＝２５６通りのデータ変換を行なうテーブルであり、例えば、入力された８ビットの信号ｂｏｘ＿ｉｎが００の場合、このＳ−Ｂｏｘテーブルからは、データとして６３が出力される。また、入力された８ビットの信号ｂｏｘ＿ｉｎが０１の場合、このＳ−Ｂｏｘテーブルからは、データとして７ｃが出力される。
【００４４】
以下、図３に示す共有型Ｓ−Ｂｏｘ回路１７の動作について説明する。
（１）１２８／Ｎのビット幅のパラレル信号ｄａｔａ＿ｉｎがパラレル／シリアル変換部１８により８ビットの信号ｂｏｘ＿ｉｎに変換される。
（２）Ｓ―Ｂｏｘ１９は、８ビットの信号ｂｏｘ＿ｉｎの入力を受けて、図４に示すテーブルを参照し、その入力に対応した出力である８ビットの信号ｂｏｘ＿ｏｕｔを出力する。
（３）出力された８ビットの信号ｂｏｘ＿ｏｕｔは、シリアル／パラレル変換部２０により１２８／Ｎのビット幅のパラレル信号ｄａｔａ＿ｏｕｔに変換される。
【００４５】
図５は、Ｎ＝４の場合の共有型Ｓ−Ｂｏｘ回路のタイミングチャートである。
【００４６】
Ｎ＝４の場合は、１２８ビット幅を４に分割したときの３２ビットのビット幅単位で、高速のクロックＣＬＫ＿Ｌに同期して処理を実行する４つの共有型Ｓ−Ｂｏｘ回路１７が必要とされる。
【００４７】
共有型Ｓ−Ｂｏｘ回路１７には、図５に示すクロックＣＬＫ＿Ｌの１サイクル目から、３２ビット幅のパラレル信号ｄａｔａ＿ｉｎ［３１：０］を表わすパラレルデータ（０×０００１０２０３）が入力される。これらのパラレルデータ（０×０００１０２０３）は、クロックＣＬＫ＿Ｌの２サイクル目，３サイクル目，４サイクル目，５サイクル目で順次に８ビットの信号ｂｏｘ＿ｉｎ［７：０］を表わすシリアルデータ（０×００），（０×０１），（０×０２），（０×０３）に変換される。さらに、これらのシリアルデータ（０×００），（０×０１），（０×０２），（０×０３）により、Ｓ―Ｂｏｘ１９から８ビットの信号ｂｏｘ＿ｏｕｔを表わす変換データ（０×６３），（０×７ｃ），（０×７７），（０×７ｄ）が、クロックＣＬＫ＿Ｌの３サイクル目，４サイクル目，５サイクル目，６サイクル目で順次に出力される。最後に、これらの変換データ（０×６３），（０×７ｃ），（０×７７），（０×７ｄ）がクロックＣＬＫ＿Ｌの７サイクル目で３２ビット幅のパラレル信号ｄａｔａ＿ｏｕｔ［７：０］を表わすパラレルデータ（０×６３７ｃ７７７ｄ）として出力される。
【００４８】
このように、Ｎ＝４の場合、共有型Ｓ−Ｂｏｘ回路１７は、３２ビット幅のパラレル信号ｄａｔａ＿ｉｎに対して、７ＣＬＫ＿Ｌサイクルを要する。すなわち、この共有型Ｓ−Ｂｏｘ回路１７は、１２８／Ｎのビット幅のパラレル信号ｄａｔａ＿ｉｎに対して、（Ｎ＋３）ＣＬＫ＿Ｌサイクルを要する。
【００４９】
図６は、本実施形態のＡＥＳ回路の、１クロックＣＬＫ＿Ｇサイクルにおける各回路の処理時間を示す図である。
【００５０】
ここで、図６に示すＭは、本実施形態のＡＥＳ回路１における、サブバイト演算器１２の処理時間と、その他の演算器（シフトロウズ演算器１３，ミックスコラムズ演算器１４，アドラウンドキー演算器１５）の処理時間との比を示す。
【００５１】
上述したように、共有型Ｓ−Ｂｏｘ回路１７は、（Ｎ＋３）ＣＬＫ＿Ｌサイクルを要する。ここで、（Ｎ＋３）ＣＬＫ＿Ｌサイクル≦（１／Ｍ）ＣＬＫ＿Ｇサイクルを満たすように、分周比（（１／Ｍ）×（Ｎ＋３））を設定する。例えば、Ｎ＝４の場合、共有型Ｓ−Ｂｏｘ回路１７は３２ビットのパラレル信号ｄａｔａ＿ｉｎに対して、７ＣＬＫ＿Ｌサイクルを要する（図５参照）。また、本設定環境では、Ｍは約２／３とする。従って、分周比は１１となる。
【図面の簡単な説明】
【００５２】
【図１】本発明の処理回路の一実施形態であるＡＥＳ回路のブロック図である。
【図２】図１に示すサブバイト演算器のブロック図である。
【図３】図２に示す共有型Ｓ−Ｂｏｘ回路のブロック図である。
【図４】Ｓ―Ｂｏｘ１９により参照されるテーブルを示す図である。
【図５】Ｎ＝４の場合の共有型Ｓ−Ｂｏｘ回路のタイミングチャートである。
【図６】本実施形態のＡＥＳ回路の、１クロックＣＬＫ＿Ｇサイクルにおける各回路の処理時間を示す図である。
【図７】従来のＡＥＳ回路のブロック図である。
【図８】図７に示すサブバイト演算器のブロック図である。
【図９】図８に示すＳ−Ｂｏｘ回路の概念図である。
【符号の説明】
【００５３】
１  ＡＥＳ回路
１０  分周器
１１，１６  レジスタ
１２  サブバイト演算器
１２ａ，１８  パラレル／シリアル変換部
１２ｂ，２０  シリアル／パラレル変換部
１３  シフトロウズ演算器
１４  ミックスコラムズ演算器
１５  アドラウンドキー演算器
１７  共有型Ｓ―Ｂｏｘ
１９  Ｓ―Ｂｏｘ（ＳＲＡＭ）
【図１】
2009251752.tif 000003
【図２】
2009251752.tif 000004
【図３】
2009251752.tif 000005
【図４】
2009251752.tif 000006
【図５】
2009251752.tif 000007
【図６】
2009251752.tif 000008
【図７】
2009251752.tif 000009
【図８】
2009251752.tif 000010
【図９】
2009251752.tif 000011