(57)【要約】【課題】デジタル処理装置の性能を向上させる。【解決手段】デジタル処理装置１は、プログラマブル論理デバイスを用いて作成され、第１ビット数を有するデータＤ１を、第１ビット数を有するデータＤ２に変換する処理部３と、データＤ２の線形処理を行う線形処理部４と、を備える。処理部３は、ルックアップテーブル記述方式に基づいて作成された複数の変換回路３１と、ブール代数記述方式に基づいて作成された複数の変換回路３２とを有する。処理部３では、単位処理回路の処理単位ごとに、複数の変換回路３１のうちのＮ個の変換回路３１又は複数の変換回路３２のうちのＮ個の変換回路３２が割り当てられる。【選択図】図１
2019092045.tif 000002
【特許請求の範囲】
【請求項１】
プログラマブル論理デバイスを用いて作成されたデジタル処理装置であって、
第１ビット数を有する第１データを、前記第１ビット数を有する第２データに変換する処理部と、
前記第２データの線形処理を行う線形処理部と、
を備え、
前記処理部は、ルックアップテーブル記述方式に基づいて作成された複数の第１変換回路と、ブール代数記述方式に基づいて作成された複数の第２変換回路とを有し、
前記複数の第１変換回路のそれぞれ及び前記複数の第２変換回路のそれぞれは、前記第１データのうちの第２ビット数を有する第１部分データを、前記第２データのうちの前記第２ビット数を有する第２部分データに変換し、
前記線形処理部は、前記第２ビット数のＮ倍（Ｎは２以上の整数）である第３ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有し、
前記処理部では、前記処理単位ごとに、前記複数の第１変換回路のうちのＮ個の第１変換回路又は前記複数の第２変換回路のうちのＮ個の第２変換回路が割り当てられる、
デジタル処理装置。
【請求項２】
前記単位処理回路は、前記単位データに含まれるＮ個の前記第２部分データの並び順を変更する、
請求項１に記載のデジタル処理装置。
【請求項３】
前記単位処理回路は、前記単位データを所定ビット数シフトする、
請求項１に記載のデジタル処理装置。
【請求項４】
プログラマブル論理デバイスを用いて作成されたデジタル処理装置であって、
所定のデータの線形処理を行い、第１ビット数を有する第１データを出力する線形処理部と、
前記第１データを、前記第１ビット数を有する第２データに変換する処理部と、
を備え、
前記処理部は、ルックアップテーブル記述方式に基づいて作成された複数の第１変換回路と、ブール代数記述方式に基づいて作成された複数の第２変換回路とを有し、
前記複数の第１変換回路のそれぞれ及び前記複数の第２変換回路のそれぞれは、前記第１データのうちの第２ビット数を有する第１部分データを、前記第２データのうちの前記第２ビット数を有する第２部分データに変換し、
前記線形処理部は、前記第２ビット数のＮ倍（Ｎは２以上の整数）である第３ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有し、
前記処理部では、前記処理単位ごとに、前記複数の第１変換回路のうちのＮ個の第１変換回路又は前記複数の第２変換回路のうちのＮ個の第２変換回路が割り当てられる、
デジタル処理装置。
【請求項５】
前記単位処理回路は、前記単位データと、前記第３ビット数を有するデータとの排他的論理和を演算する、
請求項４に記載のデジタル処理装置。
【請求項６】
前記複数の第１変換回路のそれぞれ及び前記複数の第２変換回路のそれぞれは、非線形変換処理を行う、
請求項１から請求項５のいずれか一項に記載のデジタル処理装置。
【請求項７】
複数の第１変換回路及び複数の第２変換回路を有し、第１ビット数を有する第１データを、前記第１ビット数を有する第２データに変換する処理部と、前記第２データの線形処理を行う線形処理部と、を備えるデジタル処理装置の製造方法であって、
プログラマブル論理デバイスに応じて、前記処理部及び前記線形処理部の回路機能を記述する記述工程と、
前記回路機能に基づき、前記プログラマブル論理デバイスにおいて前記処理部及び前記線形処理部を作成する作成工程と、
を備え、
前記複数の第１変換回路のそれぞれ及び前記複数の第２変換回路のそれぞれは、前記第１データのうちの第２ビット数を有する第１部分データを、前記第２データのうちの前記第２ビット数を有する第２部分データに変換し、
前記線形処理部は、前記第２ビット数のＮ倍（Ｎは２以上の整数）である第３ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有し、
前記処理部では、前記処理単位ごとに、前記複数の第１変換回路のうちのＮ個の第１変換回路又は前記複数の第２変換回路のうちのＮ個の第２変換回路が割り当てられ、
前記記述工程では、ルックアップテーブル記述方式によって前記複数の第１変換回路の回路機能が記述され、ブール代数記述方式によって前記複数の第２変換回路の回路機能が記述される、
デジタル処理装置の製造方法。
【請求項８】
所定のデータの線形処理を行い、第１ビット数を有する第１データを出力する線形処理部と、複数の第１変換回路及び複数の第２変換回路を有し、前記第１データを、前記第１ビット数を有する第２データに変換する処理部と、を備えるデジタル処理装置の製造方法であって、
プログラマブル論理デバイスに応じて、前記処理部及び前記線形処理部の回路機能を記述する記述工程と、
前記回路機能に基づき、前記プログラマブル論理デバイスにおいて前記処理部及び前記線形処理部を作成する作成工程と、
を備え、
前記複数の第１変換回路のそれぞれ及び前記複数の第２変換回路のそれぞれは、前記第１データのうちの第２ビット数を有する第１部分データを、前記第２データのうちの前記第２ビット数を有する第２部分データに変換し、
前記線形処理部は、前記第２ビット数のＮ倍（Ｎは２以上の整数）である第３ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有し、
前記処理部では、前記処理単位ごとに、前記複数の第１変換回路のうちのＮ個の第１変換回路又は前記複数の第２変換回路のうちのＮ個の第２変換回路が割り当てられ、
前記記述工程では、ルックアップテーブル記述方式によって前記複数の第１変換回路の回路機能が記述され、ブール代数記述方式によって前記複数の第２変換回路の回路機能が記述される、
デジタル処理装置の製造方法。
【請求項９】
複数の第１変換回路及び複数の第２変換回路を有し、第１ビット数を有する第１データを、前記第１ビット数を有する第２データに変換する処理部と、前記第２データの線形処理を行う線形処理部と、を備えるデジタル処理装置としてプログラマブル論理デバイスを機能させるためのプログラムであって、
前記プログラマブル論理デバイスに前記複数の第１変換回路を作成するための第１部分と、
前記プログラマブル論理デバイスに前記複数の第２変換回路を作成するための第２部分と、
を備え、
前記第１部分は、ルックアップテーブル記述方式を用いて記述され、
前記第２部分は、ブール代数記述方式を用いて記述され、
前記複数の第１変換回路のそれぞれ及び前記複数の第２変換回路のそれぞれは、前記第１データのうちの第２ビット数を有する第１部分データを、前記第２データのうちの前記第２ビット数を有する第２部分データに変換し、
前記線形処理部は、前記第２ビット数のＮ倍（Ｎは２以上の整数）である第３ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有し、
前記処理部では、前記処理単位ごとに、前記複数の第１変換回路のうちのＮ個の第１変換回路又は前記複数の第２変換回路のうちのＮ個の第２変換回路が割り当てられる、
プログラム。
【請求項１０】
所定のデータの線形処理を行い、第１ビット数を有する第１データを出力する線形処理部と、複数の第１変換回路及び複数の第２変換回路を有し、前記第１データを、前記第１ビット数を有する第２データに変換する処理部と、を備えるデジタル処理装置としてプログラマブル論理デバイスを機能させるためのプログラムであって、
前記プログラマブル論理デバイスに前記複数の第１変換回路を作成するための第１部分と、
前記プログラマブル論理デバイスに前記複数の第２変換回路を作成するための第２部分と、
を備え、
前記第１部分は、ルックアップテーブル記述方式を用いて記述され、
前記第２部分は、ブール代数記述方式を用いて記述され、
前記複数の第１変換回路のそれぞれ及び前記複数の第２変換回路のそれぞれは、前記第１データのうちの第２ビット数を有する第１部分データを、前記第２データのうちの前記第２ビット数を有する第２部分データに変換し、
前記線形処理部は、前記第２ビット数のＮ倍（Ｎは２以上の整数）である第３ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有し、
前記処理部では、前記処理単位ごとに、前記複数の第１変換回路のうちのＮ個の第１変換回路又は前記複数の第２変換回路のうちのＮ個の第２変換回路が割り当てられる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル処理装置、デジタル処理装置の製造方法及びプログラムに関する。
【背景技術】
【０００２】
ＡＳＩＣ(Application  Specific  Integrated  Circuit)及びＦＰＧＡ(Field  Programmable  Gate  Array)といったＬＳＩ(Large  Scale  Integrated  Circuit)を使った製品が、テーブル参照処理を必要とするデジタル処理装置に用いられることが知られている。このようなデジタル処理装置として、例えば、フィルタ係数をテーブルから参照しフィルタ処理を行う信号処理装置及びテーブル参照処理によって非線形変換処理を行うセキュリティ（暗号処理）装置が挙げられる。ＦＰＧＡ等のプログラマブル論理デバイスでは、ハードマクロ及びソフトマクロが用いられる。ソフトマクロでは、ハードウェア記述言語（ＨＤＬ；Hardware  Description  Language）を用いてテーブル参照処理の回路設計が行われる（例えば、特許文献１参照）。
【０００３】
ハードウェア記述言語を用いた記述方式には、ルックアップテーブル（ＬＵＴ；Look-Up-Table）を用いる記述方式、ブール代数（Boolean  algebra）を用いる記述方式及び有限体理論における拡大体を用いる記述方式がある。ブール代数を用いる記述方式では、一意にブール代数で記述する必要があり、その煩雑さからブール代数を用いる記述方式が使用される機会はあまり多くない。有限体理論における拡大体を用いる記述方式では、性能面の大きな向上が見込めるが、理論の難しさのために実用性に乏しい。このような状況において、簡便性の観点からルックアップテーブルを用いる記述方式が頻繁に使用される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−３２３１１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ルックアップテーブルを用いる記述方式のみによってテーブル参照処理の回路設計がされたデジタル処理装置には、性能面において改善の余地がある。
【０００６】
本発明は、性能を向上させることが可能なデジタル処理装置、デジタル処理装置の製造方法及びプログラムを提供する。
【課題を解決するための手段】
【０００７】
本発明の一側面に係るデジタル処理装置は、プログラマブル論理デバイスを用いて作成されたデジタル処理装置であって、第１ビット数を有する第１データを、第１ビット数を有する第２データに変換する処理部と、第２データの線形処理を行う線形処理部と、を備える。処理部は、ルックアップテーブル記述方式に基づいて作成された複数の第１変換回路と、ブール代数記述方式に基づいて作成された複数の第２変換回路とを有し、複数の第１変換回路のそれぞれ及び複数の第２変換回路のそれぞれは、第１データのうちの第２ビット数を有する第１部分データを、第２データのうちの第２ビット数を有する第２部分データに変換する。線形処理部は、第２ビット数のＮ倍（Ｎは２以上の整数）である第３ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有し、処理部では、処理単位ごとに、複数の第１変換回路のうちのＮ個の第１変換回路又は複数の第２変換回路のうちのＮ個の第２変換回路が割り当てられる。
【０００８】
このデジタル処理装置では、処理単位ごとにＮ個の第１変換回路又はＮ個の第２変換回路が割り当てられる。そのため、処理部では、異なる記述方式に基づいて作成された変換回路が混在するとともに、線形処理部が有する単位処理回路の処理単位ごとに同じ記述方式に基づいて作成されたＮ個の変換回路が割り当てられる。プログラマブル論理デバイスに作成される種々の回路は、ランダムに分散して配置されることを基本とするが、同じ記述方式に基づいた回路はまとまって配置される傾向がある。このため、処理単位ごとに同じ記述方式に基づいて作成されたＮ個の変換回路を割り当てることで、Ｎ個の変換回路がまとまって配置される可能性が高まる。その結果、プログラマブル論理デバイスに作成される回路の実装面積を小さくでき、又はその回路の処理速度を速めることができるので、デジタル処理装置の性能を向上させることが可能となる。
【０００９】
単位処理回路は、単位データに含まれるＮ個の第２部分データの並び順を変更してもよい。単位処理回路が処理するＮ個の第２部分データを供給するＮ個の変換回路は、まとまって配置される傾向があるので、Ｎ個の変換回路から単位処理回路までの配線の配線長の合計が小さくなる可能性が高まる。これにより、プログラマブル論理デバイスに作成される回路の実装面積が低減され、処理速度が速くなる可能性が高まる。
【００１０】
単位処理回路は、単位データを所定ビット数シフトしてもよい。単位処理回路が処理する単位データを供給するＮ個の変換回路は、まとまって配置される傾向があるので、Ｎ個の変換回路から単位処理回路までの配線の配線長の合計が小さくなる可能性が高まる。これにより、プログラマブル論理デバイスに作成される回路の実装面積が低減され、処理速度が速くなる可能性が高まる。
【００１１】
本発明の一側面に係るデジタル処理装置は、プログラマブル論理デバイスを用いて作成されたデジタル処理装置であって、所定のデータの線形処理を行い、第１ビット数を有する第１データを出力する線形処理部と、第１データを、第１ビット数を有する第２データに変換する処理部と、を備える。処理部は、ルックアップテーブル記述方式に基づいて作成された複数の第１変換回路と、ブール代数記述方式に基づいて作成された複数の第２変換回路とを有し、複数の第１変換回路のそれぞれ及び複数の第２変換回路のそれぞれは、第１データのうちの第２ビット数を有する第１部分データを、第２データのうちの第２ビット数を有する第２部分データに変換する。線形処理部は、第２ビット数のＮ倍（Ｎは２以上の整数）である第３ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有し、処理部では、処理単位ごとに、複数の第１変換回路のうちのＮ個の第１変換回路又は複数の第２変換回路のうちのＮ個の第２変換回路が割り当てられる。
【００１２】
このデジタル処理装置では、処理単位ごとにＮ個の第１変換回路又はＮ個の第２変換回路が割り当てられる。そのため、上述のデジタル処理装置と同様に、デジタル処理装置の性能を向上させることが可能となる。
【００１３】
単位処理回路は、単位データと、第３ビット数を有するデータとの排他的論理和を演算してもよい。単位処理回路の処理結果に基づくデータが供給されるＮ個の変換回路は、まとまって配置される傾向があるので、単位処理回路からＮ個の変換回路までの配線の配線長の合計が小さくなる可能性が高まる。これにより、プログラマブル論理デバイスに作成される回路の実装面積が低減され、処理速度が速くなる可能性が高まる。
【００１４】
複数の第１変換回路のそれぞれ及び複数の第２変換回路のそれぞれは、非線形変換処理を行ってもよい。この場合、デジタル処理装置の出力データから、デジタル処理装置の入力データを推測され難くすることが可能となる。
【００１５】
本発明の別の側面に係るデジタル処理装置の製造方法は、複数の第１変換回路及び複数の第２変換回路を有し、第１ビット数を有する第１データを、第１ビット数を有する第２データに変換する処理部と、第２データの線形処理を行う線形処理部と、を備えるデジタル処理装置の製造方法であって、プログラマブル論理デバイスに応じて、処理部及び線形処理部の回路機能を記述する記述工程と、回路機能に基づき、プログラマブル論理デバイスにおいて処理部及び線形処理部を作成する作成工程と、を備える。複数の第１変換回路のそれぞれ及び複数の第２変換回路のそれぞれは、第１データのうちの第２ビット数を有する第１部分データを、第２データのうちの第２ビット数を有する第２部分データに変換し、線形処理部は、第２ビット数のＮ倍（Ｎは２以上の整数）である第３ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有する。処理部では、処理単位ごとに、複数の第１変換回路のうちのＮ個の第１変換回路又は複数の第２変換回路のうちのＮ個の第２変換回路が割り当てられ、記述工程では、ルックアップテーブル記述方式によって複数の第１変換回路の回路機能が記述され、ブール代数記述方式によって複数の第２変換回路の回路機能が記述される。
【００１６】
このデジタル処理装置の製造方法では、ルックアップテーブル記述方式によって複数の第１変換回路の回路機能が記述され、ブール代数記述方式によって複数の第２変換回路の回路機能が記述される。さらに処理部では、処理単位ごとにＮ個の第１変換回路又はＮ個の第２変換回路が割り当てられる。そのため、上述のデジタル処理装置と同様に、デジタル処理装置の性能を向上させることが可能となる。
【００１７】
本発明の別の側面に係るデジタル処理装置の製造方法は、所定のデータの線形処理を行い、第１ビット数を有する第１データを出力する線形処理部と、複数の第１変換回路及び複数の第２変換回路を有し、第１データを、第１ビット数を有する第２データに変換する処理部と、を備えるデジタル処理装置の製造方法であって、プログラマブル論理デバイスに応じて、処理部及び線形処理部の回路機能を記述する記述工程と、回路機能に基づき、プログラマブル論理デバイスにおいて処理部及び線形処理部を作成する作成工程と、を備える。複数の第１変換回路のそれぞれ及び複数の第２変換回路のそれぞれは、第１データのうちの第２ビット数を有する第１部分データを、第２データのうちの第２ビット数を有する第２部分データに変換し、線形処理部は、第２ビット数のＮ倍（Ｎは２以上の整数）である第３ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有する。処理部では、処理単位ごとに、複数の第１変換回路のうちのＮ個の第１変換回路又は複数の第２変換回路のうちのＮ個の第２変換回路が割り当てられ、記述工程では、ルックアップテーブル記述方式によって複数の第１変換回路の回路機能が記述され、ブール代数記述方式によって複数の第２変換回路の回路機能が記述される。
【００１８】
このデジタル処理装置の製造方法では、ルックアップテーブル記述方式によって複数の第１変換回路の回路機能が記述され、ブール代数記述方式によって複数の第２変換回路の回路機能が記述される。さらに処理部では、処理単位ごとにＮ個の第１変換回路又はＮ個の第２変換回路が割り当てられる。そのため、上述のデジタル処理装置と同様に、デジタル処理装置の性能を向上させることが可能となる。
【００１９】
本発明のさらに別の側面に係るプログラムは、複数の第１変換回路及び複数の第２変換回路を有し、第１ビット数を有する第１データを、第１ビット数を有する第２データに変換する処理部と、第２データの線形処理を行う線形処理部と、を備えるデジタル処理装置としてプログラマブル論理デバイスを機能させるためのプログラムであって、プログラマブル論理デバイスに複数の第１変換回路を作成するための第１部分と、プログラマブル論理デバイスに複数の第２変換回路を作成するための第２部分と、を備える。第１部分は、ルックアップテーブル記述方式を用いて記述され、第２部分は、ブール代数記述方式を用いて記述され、複数の第１変換回路のそれぞれ及び複数の第２変換回路のそれぞれは、第１データのうちの第２ビット数を有する第１部分データを、第２データのうちの第２ビット数を有する第２部分データに変換する。線形処理部は、第２ビット数のＮ倍（Ｎは２以上の整数）である第３ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有し、処理部では、処理単位ごとに、複数の第１変換回路のうちのＮ個の第１変換回路又は複数の第２変換回路のうちのＮ個の第２変換回路が割り当てられる。
【００２０】
このプログラムでは、第１部分は、ルックアップテーブル記述方式を用いて記述され、第２部分は、ブール代数記述方式を用いて記述される。さらに処理部では、処理単位ごとにＮ個の第１変換回路又はＮ個の第２変換回路が割り当てられる。そのため、上述のデジタル処理装置と同様に、デジタル処理装置の性能を向上させることが可能となる。
【００２１】
本発明のさらに別の側面に係るプログラムは、所定のデータの線形処理を行い、第１ビット数を有する第１データを出力する線形処理部と、複数の第１変換回路及び複数の第２変換回路を有し、第１データを、第１ビット数を有する第２データに変換する処理部と、を備えるデジタル処理装置としてプログラマブル論理デバイスを機能させるためのプログラムであって、プログラマブル論理デバイスに複数の第１変換回路を作成するための第１部分と、プログラマブル論理デバイスに複数の第２変換回路を作成するための第２部分と、を備える。第１部分は、ルックアップテーブル記述方式を用いて記述され、第２部分は、ブール代数記述方式を用いて記述され、複数の第１変換回路のそれぞれ及び複数の第２変換回路のそれぞれは、第１データのうちの第２ビット数を有する第１部分データを、第２データのうちの第２ビット数を有する第２部分データに変換する。線形処理部は、第２ビット数のＮ倍（Ｎは２以上の整数）である第３ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有し、処理部では、処理単位ごとに、複数の第１変換回路のうちのＮ個の第１変換回路又は複数の第２変換回路のうちのＮ個の第２変換回路が割り当てられる。
【００２２】
このプログラムでは、第１部分は、ルックアップテーブル記述方式を用いて記述され、第２部分は、ブール代数記述方式を用いて記述される。さらに処理部では、処理単位ごとにＮ個の第１変換回路又はＮ個の第２変換回路が割り当てられる。そのため、上述のデジタル処理装置と同様に、デジタル処理装置の性能を向上させることが可能となる。
【発明の効果】
【００２３】
本発明によれば、デジタル処理装置の性能を向上させることが可能となる。
【図面の簡単な説明】
【００２４】
【図１】図１は、第１実施形態に係るデジタル処理装置の構成を示す図である。
【図２】図２は、図１の線形処理部の詳細構成を示す図である。
【図３】図３は、第１実施形態に係るデジタル処理装置の変形例を示すである。
【図４】図４は、第２実施形態に係るデジタル処理装置の構成を示す図である。
【図５】図５は、図４の配列変換回路の配列変換処理を説明するための図である。
【図６】図６は、第２実施形態に係るデジタル処理装置の変形例を示す図である。
【発明を実施するための形態】
【００２５】
以下、添付図面を参照しながら本発明の実施形態の詳細を説明する。図面の説明において、同一又は同等の要素には同一符号が用いられ、重複する説明は省略される。
【００２６】
図１は、第１実施形態に係るデジタル処理装置の構成を示す図である。図２は、図１の線形処理部の詳細構成を示す図である。図１に示されるデジタル処理装置１は、ＢＯＲＯＮ規格に準拠した暗号処理を行うための装置である。デジタル処理装置１は、プログラマブル論理デバイスを用いて作成される。プラグラマブル論理デバイスとしては、例えば、ＦＰＧＡ及びＰＬＤ（Programmable  Logic  Device）が用いられる。
【００２７】
デジタル処理装置１は、暗号データ生成部２、処理部３、及び線形処理部４を備える。デジタル処理装置１は、暗号データ生成部２、処理部３、及び線形処理部４によって、第１ビット数（図１では６４ビット）を有する入力データをデジタル処理することで、第１ビット数を有する出力データを出力する。なお図１では、暗号データ生成部２、処理部３、及び線形処理部４は、それぞれ１つずつ示されているが、デジタル処理装置１は、暗号データ生成部２、処理部３、及び線形処理部４を１つの回路部１０として、複数の回路部１０を備えている。複数の回路部１０は、直列に接続されており、互いに隣り合う２つの回路部１０，１０では、前段の回路部１０から出力されたデータＤｏｕｔが、後段の回路部１０にデータＤｉｎとして入力される。なお、データＤｉｎに含まれる各ビットには、ＬＳＢ（Least  Significant  Bit；最下位ビット）からＭＳＢ（Most  Significant  Bit；最上位ビット）まで昇順でビット番号が割り当てられている。本実施形態では、ＬＳＢのビット番号は０番で、ＭＳＢのビット番号は６３番である。データＤｏｕｔ、及び後述のデータＤ１，Ｄ２，Ｄ３，Ｄ４についても同様である。
【００２８】
暗号データ生成部２は、暗号鍵データに基づきデータＤｉｎを論理演算する回路である。具体的には、暗号データ生成部２は、データＤｉｎと暗号鍵データとのＸＯＲ（排他的論理和）を演算する。データＤｉｎは、第１ビット数を有するデータである。暗号鍵データは、予め不図示のメモリに記憶されており、メモリから暗号データ生成部２に入力される。暗号鍵データは、不図示の暗号鍵生成回路によって逐次生成され、暗号鍵生成回路から暗号データ生成部２に入力されてもよい。暗号鍵データは、第１ビット数を有する。暗号データ生成部２は、演算結果をデータＤ１（第１データ）として処理部３に出力する。データＤ１は、第１ビット数を有するデータである。
【００２９】
処理部３は、データＤ１をデータＤ２（第２データ）に変換する回路である。データＤ２は、第１ビット数を有するデータである。具体的には、処理部３は、データＤ１の非線形変換処理を行うことでデータＤ２を生成する。処理部３は、データＤ２を線形処理部４に出力する。処理部３は、複数の変換回路３１（複数の第１変換回路）及び複数の変換回路３２（複数の第２変換回路）を有する。複数の変換回路３１及び複数の変換回路３２は、並列に配置されており、各変換回路３１及び各変換回路３２には、データｄ１（第１部分データ）が入力される。データｄ１は、データＤ１のうちの一部のデータであり、第２ビット数（図１では４ビット）を有する。データｄ１は、データＤ１のＬＳＢからＭＳＢまでの全てのデータを、ビット番号順に第２ビット数単位で分割したデータである。図１では、１６個のデータｄ１によって、データＤ１が構成される。複数の変換回路３１のそれぞれ及び複数の変換回路３２のそれぞれが、それぞれに入力されるデータｄ１を変換処理することで、処理部３はデータＤ１をデータＤ２に変換する。
【００３０】
変換回路３１は、ルックアップテーブルを用いる記述方式（ルックアップテーブル記述方式）に基づいて作成された回路である。変換回路３２は、ブール代数を用いる記述方式（ブール代数記述方式）に基づいて作成された回路である。変換回路３１及び変換回路３２は、互いに等価な機能を有する。
【００３１】
変換回路３１，３２は、データｄ１を変換処理する回路である。具体的には、変換回路３１，３２は、データｄ１をデータｄ２（第２部分データ）に変換する。データｄ２は、データＤ２のうちの一部のデータであり、第２ビット数を有する。データｄ２は、データＤ２のＬＳＢからＭＳＢまでの全てのデータを、ビット番号順に第２ビット数単位で分割したデータである。図１では、１６個のデータｄ２によって、データＤ２が構成される。変換回路３１，３２は、データｄ１とデータｄ２との関係を定めた真理値表等に基づいたテーブル参照回路を実現する論理演算回路である。変換回路３１，３２は、Ｓ−ＢＯＸ（substitution  box）とも称される。
【００３２】
処理部３では、データＤ１のうちの第２ビット数のＮ倍（Ｎは２以上の整数）の第３ビット数（図１では１６ビット）のデータごとに複数の変換回路３１のうちのＮ個の変換回路３１又は複数の変換回路３２のうちのＮ個の変換回路３２が割り当てられる。なお本実施形態では、Ｎ＝４である。具体的には、処理部３では、データＤ１のうちのＬＳＢから１５番目のビットまでの４個のデータｄ１に対して、それぞれ変換回路３２が割り当てられる。データＤ１のうち１６番目から３１番目のビットまでの４個のデータｄ１に対して、それぞれ変換回路３１が割り当てられる。データＤ１のうちの３２番目から４７番目のビットまでの４個のデータｄ１に対して、それぞれ変換回路３２が割り当てられる。データＤ１のうちの４８番目のビットからＭＳＢまでの４個のデータｄ１に対して、それぞれ変換回路３１が割り当てられる。
【００３３】
線形処理部４は、データＤ２を線形処理する回路である。線形処理部４は、データＤ２を線形処理することで、データＤｏｕｔを生成する。データＤｏｕｔは、第１ビット数を有するデータである。線形処理部４は、データＤｏｕｔを回路部１０からの出力データとして出力する。線形処理部４は、シャッフル回路４１、シフト回路４２、及びＸＯＲ実行回路４３を有する。
【００３４】
シャッフル回路４１は、データＤ２に対してシャッフル処理を施す回路である。シャッフル処理とは、データＤ２に含まれる並列に配置された複数のデータｄ２の並び順を変更する処理である。シャッフル回路４１は、データＤ２のシャッフル処理を行うことでデータＤ３を生成する。シャッフル回路４１は、データＤ３をシフト回路４２に出力する。データＤ３は第１ビット数を有するデータである。シャッフル回路４１は、図２に示されるように、複数（ここでは、４つ）のシャッフル回路４１ａ〜４１ｄ（単位処理回路）を有する。シャッフル回路４１ａ〜４１ｄのそれぞれは、第３ビット数を有する単位データを処理単位として、シャッフル処理（線形処理）を行う回路である。シャッフル回路４１ａ〜４１ｄのそれぞれは、単位データに含まれるＮ個（ここでは、Ｎ＝４）のデータｄ２の並び順を変更する。シャッフル回路４１ａ〜４１ｄは並列に配置され、シャッフル回路４１ａ〜４１ｄのそれぞれは、４個の変換回路３１及び４個の変換回路３２のいずれかに割り当てられる。
【００３５】
具体的には、シャッフル回路４１ａは、４個の変換回路３２に割り当てられており、データＤ２のうちのＬＳＢから１５番目のビットまでの４つのデータｄ２を単位データとしてシャッフル処理を行う。シャッフル回路４１ａは、シャッフル処理結果をデータｄ３ａとして後述のシフト回路４２ａに出力する。シャッフル回路４１ａは、データＤ２のうちのＬＳＢから３番目のビットまでのデータｄ２を、データｄ３ａにおける８番目から１１番目のビット位置に配置し、データＤ２のうちの４番目から７番目のビットまでのデータｄ２を、データｄ３ａにおける１２番目から１５番目のビット位置に配置する。シャッフル回路４１ａは、データＤ２のうちの８番目から１１番目のビットまでのデータｄ２を、データｄ３ａにおけるＬＳＢから３番目のビット位置に配置し、データＤ２のうちの１２番目から１５番目のビットまでのデータｄ２を、データｄ３ａにおける４番目から７番目のビット位置に配置する。
【００３６】
シャッフル回路４１ｂは、４個の変換回路３１に割り当てられており、データＤ２のうちの１６番目から３１番目のビットまでの４つのデータｄ２を単位データとしてシャッフル処理を行う。シャッフル回路４１ｂは、シャッフル処理結果をデータｄ３ｂとして後述のシフト回路４２ｂに出力する。シャッフル回路４１ｃは、４個の変換回路３２に割り当てられており、データＤ２のうちの３２番目から４７番目のビットまでの４つのデータｄ２を単位データとしてシャッフル処理を行う。シャッフル回路４１ｃは、シャッフル処理結果をデータｄ３ｃとして後述のシフト回路４２ｃに出力する。シャッフル回路４１ｄは、４個の変換回路３１に割り当てられており、データＤ２のうちの４８番目のビットからＭＳＢまでの４つのデータｄ２を単位データとしてシャッフル処理を行う。シャッフル回路４１ｄは、シャッフル処理結果をデータｄ３ｄとして後述のシフト回路４２ｄに出力する。
【００３７】
なお、データｄ３ａ〜ｄ３ｄは、データＤ３のうちの一部のデータであり、第３ビット数を有する。データｄ３ａ〜ｄ３ｄは、データＤ３のＬＳＢからＭＳＢまでの全てのデータを、ビット番号順に第３ビット数単位で分割したデータである。図２では、データｄ３ａ〜ｄ３ｄによって、データＤ３が構成される。シャッフル回路４１ｂ〜４１ｄは、シャッフル処理を施す複数（ここでは、４つ）のデータｄ２が異なる点を除きシャッフル回路４１ａと同様に複数のデータｄ２の並び順を変更するので、詳細な説明を省略する。なお、図２に示されるシャッフル回路４１ａ〜４１ｄでは、４ビットのデータが１本の線にまとめられて示されている。
【００３８】
シフト回路４２は、データＤ３に対してシフト処理を施す回路である。シフト処理とは、データＤ３に含まれるデータｄ３ａ〜ｄ３ｄのそれぞれを所定のビット数シフトする処理である。シフト回路４２は、データＤ３のシフト処理を行うことでデータＤ４を生成する。シフト回路４２は、データＤ４をＸＯＲ実行回路４３に出力する。データＤ４は第１ビット数を有するデータである。シフト回路４２は、複数（ここでは、４つ）のシフト回路４２ａ〜４２ｄ（単位処理回路）を有する。シフト回路４２ａ〜４２ｄは、並列に配置され、データｄ３ａ〜ｄ３ｄにそれぞれ割り当てられる。シフト回路４２ａ〜４２ｄのそれぞれは、第３ビット数を有する単位データを処理単位として、左シフト処理（線形処理）を行う。
【００３９】
具体的には、シフト回路４２ａは、データｄ３ａを単位データとして、データｄ３ａを１ビットシフト（左シフト）する。左シフトとは、シフトさせる対象のデータに含まれる全てのビットを、所定のビット数上位にサイクリックにずらす処理である。シフト回路４２ａは、シフト処理結果をデータｄ４ａとして後述のＸＯＲ演算回路４３ａ，４３ｃに出力する。シフト回路４２ａのシフト処理では、例えば、データｄ３ａのうちのＬＳＢに位置するビットは、データｄ４ａにおける１番目のビット位置にシフトされ、データｄ３ａのうちの１番目のビットは、データｄ４ａにおける２番目のビット位置にシフトされ、データｄ３ａのうちの１５番目のビットは、データｄ４ａにおけるＬＳＢのビット位置にシフトされる。
【００４０】
シフト回路４２ｂは、データｄ３ｂを単位データとして、データｄ３ｂを４ビット左シフトする。シフト回路４２ｂは、シフト処理結果をデータｄ４ｂとして後述のＸＯＲ演算回路４３ｂに出力する。シフト回路４２ｃは、データｄ３ｃを単位データとして、データｄ３ｃを７ビット左シフトする。シフト回路４２ｃは、シフト処理結果をデータｄ４ｃとして後述のＸＯＲ演算回路４３ｃに出力する。シフト回路４２ｄは、データｄ３ｄを単位データとして、データｄ３ｄを９ビット左シフトする。シフト回路４２ｄは、シフト処理結果をデータｄ４ｄとして後述のＸＯＲ演算回路４３ｂ，４３ｄに出力する。なお、データｄ４ａ〜ｄ４ｄは、データＤ４のうちの一部のデータであり、第３ビット数を有する。データｄ４ａ〜ｄ４ｄは、データＤ４のＬＳＢからＭＳＢまでの全てのデータを、ビット番号順に第３ビット数単位で分割したデータである。図２では、データｄ４ａ〜ｄ４ｄによって、データＤ４が構成される。なお、図２では、１６ビットのデータが１本の線にまとめられて、データｄ３ａ〜ｄ３ｄ及びデータｄ４ａ〜ｄ４ｄが示されている。
【００４１】
ＸＯＲ実行回路４３は、データＤ４に対してＸＯＲ演算処理を施す回路である。ＸＯＲ実行回路４３は、データＤ４のＸＯＲ演算処理を行うことでデータＤｏｕｔを生成する。ＸＯＲ実行回路４３は、データＤｏｕｔを回路部１０からの出力データとして出力する。ＸＯＲ実行回路４３は、複数（ここでは、４つ）のＸＯＲ演算回路４３ａ〜４３ｄを有する。ＸＯＲ演算回路４３ａ〜４３ｄは、並列に配置され、データｄ４ａ〜ｄ４ｄのそれぞれに割り当てられる。ＸＯＲ演算回路４３ａ〜４３ｄのそれぞれは、データｄ４ａ〜ｄ４ｄに対してＸＯＲ演算処理（線形処理）を行う。
【００４２】
具体的には、ＸＯＲ演算回路４３ｃは、データｄ４ａとデータｄ４ｃとのＸＯＲを演算する。ＸＯＲ演算回路４３ｃは、演算結果をデータＤｏｕｔのうちの３２番目から４７番目のビットまでのデータとして出力するとともに、演算結果をＸＯＲ演算回路４３ｄに出力する。ＸＯＲ演算回路４３ｂは、データｄ４ｂとデータｄ４ｄとのＸＯＲを演算する。ＸＯＲ演算回路４３ｂは、演算結果をデータＤｏｕｔのうちの１６番目から３１番目のビットまでのデータとして出力するとともに、演算結果をＸＯＲ演算回路４３ａに出力する。ＸＯＲ演算回路４３ａは、データｄ４ａとＸＯＲ演算回路４３ｂの演算結果とのＸＯＲを演算する。ＸＯＲ演算回路４３ａは、演算結果をデータＤｏｕｔのうちのＬＳＢから１５番目のビットまでのデータとして出力する。ＸＯＲ演算回路４３ｄは、データｄ４ｄとＸＯＲ演算回路４３ｃの演算結果とのＸＯＲを演算する。ＸＯＲ演算回路４３ｄは、演算結果をデータＤｏｕｔのうちの４８番目のビットからＭＳＢまでのデータとして出力する。
【００４３】
図３は、第１実施形態に係るデジタル処理装置の変形例を示す図である。図３に示されるデジタル処理装置１Ａは、処理部３での複数の変換回路３１及び複数の変換回路３２の割り当て方において図１に示されるデジタル処理装置１と相違する。具体的には、デジタル処理装置１Ａでは、データＤ１のうちのＬＳＢから１５番目のビットまでの４個のデータｄ１に対して、それぞれ変換回路３１が割り当てられる。データＤ１のうち１６番目から３１番目のビットまでの４個のデータｄ１に対して、それぞれ変換回路３２が割り当てられる。データＤ１のうちの３２番目から４７番目のビットまでの４個のデータｄ１に対して、それぞれ変換回路３１が割り当てられる。データＤ１のうちの４８番目のビットからＭＳＢまでの４個のデータｄ１に対して、それぞれ変換回路３２が割り当てられる。
【００４４】
次に、デジタル処理装置１の製造方法を説明する。ここでは、プログラマブル論理デバイスとしてＦＰＧＡを用いる場合について説明する。デジタル処理装置１が備える回路部１０は、ＦＰＧＡを用いて作成される。デジタル処理装置１の製造では、まず、回路部１０の回路機能をハードウェア記述言語で記述したプログラムが、回路設計者等のユーザによって作成される。そして、専用ツール等によって、プログラムに基づきＦＰＧＡに回路部１０の回路機能が書き込まれることで、ＦＰＧＡ上に回路部１０が作成される。なお、回路機能が書き込まれていないＦＰＧＡは、予め製作されている。デジタル処理装置１の製造方法は、記述工程と作成工程とを備える。
【００４５】
記述工程は、ＦＰＧＡに応じてデジタル処理装置１が備える回路部１０の機能を記述する工程である。具体的には、暗号データ生成部２、処理部３及び線形処理部４のそれぞれの回路機能が、ＦＰＧＡに応じたハードウェア記述言語によって記述される。回路機能を記述したプログラムは、ＦＰＧＡに複数の変換回路３１を作成するための第１部分と、ＦＰＧＡに複数の変換回路３２を作成するための第２部分とを備える。変換回路３１及び変換回路３２の回路機能は、真理値表等に基づき入力値に対して一意に出力値が定まるように記述される。
【００４６】
複数の変換回路３１の回路機能は、ルックアップテーブル記述方式によって記述される。つまり、プログラムの第１部分は、ルックアップテーブル記述方式を用いて記述される。具体的には、４ビットのデータｄ１の値（入力値）及びデータｄ２の値（出力値）が１６進数で表され、全ての１６進数の入力値０〜Ｆ（２進数では００００〜１１１１）に対して、それぞれに１６進数の出力値０〜Ｆを一意に対応付けるように、各変換回路３１の回路機能が記述される。各変換回路３１の回路機能は、例えば、入力値が２（２進数では００１０）に対して出力値としてＢ（２進数では１０１１）を対応付け、入力値が３（２進数では００１１）に対して出力値として１（２進数では０００１）を対応付けるように記述される。なお、入力値及び出力値を１０進数で表すことで、入力値及び出力値が一意に対応付けられてもよい。
【００４７】
複数の変換回路３２の回路機能は、ブール代数記述方式によって記述される。つまり、プログラムの第２部分は、ブール代数記述方式を用いて記述される。具体的には、データｄ２の各ビットを、データｄ１の複数のビットを含むブール代数（論理演算式）で表すように各変換回路３２の回路機能が記述される。データｄ１を２進数表記で（ｘ３，ｘ２，ｘ１，ｘ０）とし、データｄ２を２進数表記で（ｙ３，ｙ２，ｙ１，ｙ０）とすると、データｄ２のｙ０は、例えば、下記式（１）のようにブール代数によって記述される。ここで、！はｘｎ（ｎは０〜３）の否定（ＮＯＴ）を表し、＆は論理積（ＡＮＤ）演算を表し、｜は論理和（ＯＲ）演算を表す。同様にして、出力値の他のビットであるｙ１，ｙ２，及びｙ３も、データｄ１の各ビット（ｘ０，ｘ１，ｘ２，ｘ３）から一意に定まるブール代数によって記述される。
y0=(!x3&!x2&x1)|(!x2&x1&x0)|(!x3&x2&!x1)|(x2&!x1&x0)|(x3&!x2&!x1&!x0)|(x3&x2&x1&!x0)…(1)
【００４８】
変換回路３１及び変換回路３２の回路機能は、データｄ１の値が同じであれば、同じデータｄ２の値を出力するように記述される。複数の変換回路３１及び複数の変換回路３２の回路機能の記述が含まれるプログラムは、ソースファイルとも称される。回路機能が記述されたプログラムは、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ（Compact  Disc−Read  only  memory）、ＤＶＤ（Digital  Versatile  Disc）もしくはＲＯＭ等の記憶媒体または半導体メモリに格納されて提供される。また、上述のプログラムは、搬送波に重畳されたコンピュータデータ信号としてネットワークを介して提供されてもよい。
【００４９】
続いて、上述のプログラムに記述した回路機能に基づき、ＦＰＧＡにおいて回路部１０が作成される（作成工程）。作成工程では、例えば、専用ツールによって、上述のプログラムが、ハードウェア記述言語を中間言語に翻訳したネットリストに変換される。そして、ネットリストからＦＰＧＡに書き込むための書き込み用データ（オブジェクトファイル）が作成される。そして、書き込みツールによって、書き込み用データをＦＰＧＡに書き込むことで（コンフィギュレーション）、ＦＰＧＡにおいて処理部３及び線形処理部４を含む回路部１０が作成される。なお、デジタル処理装置１Ａも、デジタル処理装置１と同様に製造される。
【００５０】
次に、第１実施形態に係るデジタル処理装置１，１Ａの効果の検証結果を説明する。表１及び表２は、ＦＰＧＡとしてＸｉｌｉｎｘ社のｓｐ６（製品名）を用いた場合の検証結果である。第１検証例は、図１に示されるデジタル処理装置１での検証結果である。第２検証例は、図２に示されるデジタル処理装置１Ａでの検証結果である。第１比較例は、処理部３が有する変換回路を全てルックアップテーブル記述方式に基づいて作成した場合の比較結果であり、第２比較例は、処理部３が有する変換回路を全てブール代数記述方式に基づいて作成した場合の比較結果である。第１検証例、第２検証例、第１比較例及び第２比較例におけるデジタル処理装置のそれぞれは、２４個の回路部を備える。表１には、デジタル処理装置の入力データ及び出力データの各ビットを、ＦＰＧＡ上の特定の入出力端子に割り当てない場合（ＩＯ−Ｆｌｏａｔｅｄ）での検証結果が示されている。また、表２には、デジタル処理装置の入力データ及び出力データの各ビットを、ＦＰＧＡ上の特定の入出力端子に割り当てた場合（ＩＯ−Ｓｔｕｃｋ）での検証結果が示されている。回路合成の最適化オプションとして、ＩＯ−Ｆｌｏａｔｅｄの場合には動作速度を最重視するオプションを、ＩＯ−Ｓｔｕｃｋの場合には動作速度を重視するが実装面積とのバランスも考慮するオプションを選択して、検証を行った。
【表１】
2019092045.tif 000003
【表２】
2019092045.tif 000004
【００５１】
表１の評価項目に関し、「ＬＵＴｓ」は、第１検証例、第２検証例、第１比較例及び第２比較例の回路構成を実現するために、ＦＰＧＡの論理ブロックを構成するルックアップテーブルの使用個数を示し、その単位は個である。「実装面積」は、ＦＰＧＡに作成された回路の実装面積、ここでは、ＦＰＧＡの所定数のルックアップテーブル及びフリップフロップで構成されるスライスの使用個数を示し、その単位はスライス数である。「動作速度」は、デジタル処理装置が動作可能な最大の周波数であり、その単位はメガヘルツ（ＭＨｚ）である。「消費電力」は、動作速度１０ＭＨｚでのＦＰＧＡ上に作成された回路で消費される電力を示し、その単位はミリワット（ｍＷ）である。
【００５２】
表１及び表２に示されるように、第１検証例、第２検証例、第１比較例、及び第２比較例において、ＦＰＧＡ上で使用されたルックアップテーブルの個数は同じであった。ＩＯ−Ｆｌｏａｔｅｄの場合、第１検証例の検証結果では、実装面積が第１比較例及び第２比較例と比べて小さくなり、第２検証例の検証結果では、動作速度が第１比較例及び第２比較例と比べて速くなった。一方、ＩＯ−Ｓｔｕｃｋの場合、第１検証例の検証結果では、実装面積が第１比較例及び第２比較例と比べ小さくなり、さらに動作速度が第１比較例及び第２比較例と比べて速くなった。また、第２検証例の検証結果では、実装面積が第１比較例及び第２比較例と比べて小さくなり、さらに動作速度が第１比較例及び第２比較例と比べて速くなった。
【００５３】
ＩＯ−Ｆｌｏａｔｅｄの場合、第１検証例及び第２検証例の検証結果では、第１比較例及び第２比較例のうちの消費電力が大きい比較例と比べて、消費電力が小さくなった。一方、ＩＯ−Ｓｔｕｃｋの場合、第１検証例の検証結果では、第１比較例及び第２比較例のうちの消費電力が大きい比較例と比べて、消費電力が小さくなった。第２検証例の検証結果では、第１比較例及び第２比較例と比べて、消費電力が小さくなった。以上のことから、第１検証例及び第２検証例では、第１比較例及び第２比較例と比べて、消費電力の大幅な増加をもたらすことなく、性能が向上したことがわかる。
【００５４】
このようなデジタル処理装置１，１Ａでは、シャッフル回路４１ａ〜４１ｄ（単位処理回路）のそれぞれ及びシフト回路４２ａ〜４２ｄ（単位処理回路）のそれぞれは、第２ビット数（４ビット）の４倍である第３ビット数（１６ビット）を有する単位データを処理単位として線形処理を行う。また処理部３では、処理単位ごとに４個の変換回路３１又は４個の変換回路３２が割り当てられる。処理部３では、異なる記述方式に基づいて作成された変換回路３１，３２が混在するとともに、処理単位ごとに同じ記述方式に基づいて作成された４個の変換回路３１，３２が割り当てられる。ＦＰＧＡ（プログラマブル論理デバイス）に作成される種々の回路は、ランダムに分散して配置されることを基本とするが、同じ記述方式に基づいた回路はまとまって配置される傾向がある。このため、処理単位ごとに同じ記述方式に基づいて作成された４個の変換回路３１，３２を割り当てることで、４個の変換回路３１，３２がまとまって配置される可能性が高まる。その結果、ＦＰＧＡに作成される回路の実装面積を小さくでき、又はその回路の処理速度を速めることができるので、デジタル処理装置の性能を向上させることが可能となる。
【００５５】
シャッフル回路４１ａ〜４１ｄ（単位処理回路）は、単位データに含まれる４個のデータｄ２（第２部分データ）の並び順を変更する。シャッフル回路４１ａが処理する４個のデータｄ２を供給する４個の変換回路３２が、分散して配置されている場合、４個の変換回路３２からシャッフル回路４１ａまでの配線の配線長の合計が大きくなる可能性がある。これに対して、シャッフル回路４１ａが処理する４個のデータｄ２を供給する４個の変換回路３２は、まとまって配置される傾向があるので、上記配線長の合計が小さくなる可能性が高まる。これにより、ＦＰＧＡに作成される回路の実装面積が低減され、処理速度が速くなる可能性が高まる。シャッフル回路４１ｂ〜４１ｄについても同様である。
【００５６】
シフト回路４２ａ〜４２ｄ（単位処理回路）は、データｄ３ａ〜ｄ３ｄ（単位データ）を所定ビット数シフトする。シフト回路４２ａが処理するデータｄ３ａをシャッフル回路４１ａを介して供給する４個の変換回路３２が、分散して配置されている場合、４個の変換回路３２からシャッフル回路４１ａを介してシフト回路４２ａまでの配線の配線長の合計が大きくなる可能性がある。これに対して、上記４個の変換回路３２は、まとまって配置される傾向があるので、上記配線長の合計が小さくなる可能性が高まる。これにより、ＦＰＧＡに作成される回路の実装面積が低減され、処理速度が速くなる可能性が高まる。シフト回路４２ｂ〜４２ｄについても同様である。
【００５７】
複数の変換回路３１（第１変換回路）のそれぞれ及び複数の変換回路３２（第２変換回路）のそれぞれは、非線形変換処理を行う。そのため、デジタル処理装置１，１Ａの出力データから、デジタル処理装置１，１Ａの入力データを推測され難くすることが可能となる。
【００５８】
図４は、第２実施形態に係るデジタル処理装置の構成を示す図である。図５は、図４の配列処理回路の配列変換処理を説明するための図である。図４に示されるデジタル処理装置５は、ＰＲＩＮＴｃｉｐｈｅｒ規格に準拠した暗号処理を行うための装置である。デジタル処理装置５は、第１実施形態に係るデジタル処理装置１と比較して、入力データ及び出力データの第１ビット数が４８ビットである点、並びに処理部３及び線形処理部４に代えて、処理部７及び線形処理部６を備える点において、主に相違する。
【００５９】
デジタル処理装置５では、暗号データ生成部２は、データＤｉｎと暗号鍵データとのＸＯＲを演算し、演算結果をデータＤ１として線形処理部６に出力する。データＤｉｎ及びＤ１は第１ビット数を有する。なお、本実施形態では、データＤｉｎにおけるＭＳＢのビット番号は４７番である。データＤ１、及び後述のデータＤ５，Ｄ６，Ｄ７，Ｄｏｕｔについても同様である。線形処理部６は、データＤ１を線形処理し、線形処理結果をデータＤ７（第１データ）として処理部７に出力する。データＤ７は第１ビット数を有するデータである。線形処理部６は、配列変換回路６１、ＸＯＲ実行回路６２、及び置換回路６３を有する。
【００６０】
配列変換回路６１は、データＤ１に対して配列変換処理（線形処理）を施す回路である。配列変換処理とは、データＤ１に含まれる複数のビットの配列を変更する処理である。配列変換回路６１は、データＤ１の配列変換処理を行うことでデータＤ５を生成する。配列変換回路６１は、データＤ５をＸＯＲ実行回路６２に出力する。データＤ５は第１ビット数を有するデータである。
【００６１】
図５に示されるように、配列変換回路６１は、データＤ１におけるビット番号ｍが０番目から１５番目までの各ビットを、データＤ５において（３×ｍ）番目のビット位置に配置する。配列変換回路６１は、データＤ１におけるビット番号ｍが１６番目から３１番目の各ビットを、データＤ５において｛３×（ｍ−１６）＋１｝番目のビット位置に配置する。配列変換回路６１は、データＤ１におけるビット番号ｍが３２番目から４７番目までの各ビットを、データＤ５において｛３×（ｍ−３２）＋２｝番目のビット位置に配置する。
【００６２】
ＸＯＲ実行回路６２は、データＤ５に対してＸＯＲ演算処理を施す回路である。ＸＯＲ実行回路６２は、データＤ５のＸＯＲ演算処理を行うことでデータＤ６を生成する。ＸＯＲ実行回路６２は、データＤ６を置換回路６３に出力する。データＤ６は、第１ビット数を有するデータである。ＸＯＲ実行回路６２は、ＸＯＲ演算回路６２ａを有する。ＸＯＲ演算回路６２ａは、データＤ５のうちのＬＳＢから５番目のビットまでのデータｄ５１に割り当てられる。ＸＯＲ演算回路６２ａは、データｄ５１に対してＸＯＲ演算処理（線形処理）を行う。ＸＯＲ演算回路６２ａは、演算結果をデータｄ６１として置換回路６３に出力する。ＸＯＲ実行回路６２は、データＤ５のうちの６番目のビットからＭＳＢまでのデータｄ５２を、値を変更することなくデータｄ６２として置換回路６３に出力する。
【００６３】
なお、データｄ５１はデータＤ５の一部のデータであり、第３ビット数（ここでは、６ビット）を有する。データｄ５２はデータＤ５の一部のデータである。データｄ５１及びデータｄ５２によって、データＤ５が構成される。データｄ６１はデータＤ６の一部のデータであり、第３ビット数を有する。データｄ６２はデータＤ６の一部のデータである。データｄ６１及びデータｄ６２によって、データＤ６が構成される。データｄ５２及びデータｄ６２は、同じビット数（ここでは、４２ビット）を有する。
【００６４】
ＸＯＲ演算回路６２ａ（単位処理回路）は、データｄ５１とラウンド定数データとのＸＯＲを演算する。ＸＯＲ演算回路６２ａは、第２ビット数のＮ倍（Ｎは２以上の整数）である第３ビット数を有するデータｄ５１を単位データとしてＸＯＲ演算処理（線形処理）を行う。なお本実施形態では、Ｎ＝２である。ラウンド定数データは、予め不図示のメモリに記憶されており、メモリからＸＯＲ演算回路６２ａに入力される。ラウンド定数データは、不図示のラウンド定数生成回路によって逐次生成され、ラウンド定数生成回路からＸＯＲ演算回路６２ａに入力されてもよい。ラウンド定数データは、第３ビット数を有する。ラウンド定数データは、デジタル処理装置５が備える複数の回路部１０のそれぞれで異なる値を有していてもよい。
【００６５】
置換回路６３は、データＤ６に対して、置換処理を施す回路である。置換処理とは、データＤ６のうちの第２ビット数（ここでは、３ビット）を有するデータに含まれる各ビットのビット位置を、相互に入れ替える処理である。置換回路６３は、データＤ６の置換処理を行うことでデータＤ７を生成する。置換回路６３は、データＤ７を処理部７に出力する。データＤ７は、第１ビット数を有するデータである。置換回路６３は、複数（ここでは、１６個）の個別置換回路６４を有する。複数の個別置換回路６４は、並列に配置され、複数の個別置換回路６４のそれぞれは、データＤ６における第２ビット数を有するデータごとに、ＬＳＢから順に割り当てられる。個別置換回路６４は、データＤ６のうちの第２ビット数を有するデータに対して、置換処理（線形処理）を施す。
【００６６】
具体的には、個別置換回路６４は、２ビットのラウンド鍵に応じて、個別置換回路６４に入力されるデータの各ビットのビット位置を相互に入れ替える。ラウンド鍵は、予め不図示のメモリに記憶されており、メモリから各個別置換回路６４に入力される。ラウンド鍵は、不図示のラウンド鍵生成回路によって逐次生成され、ラウンド鍵生成回路から各個別置換回路６４に入力されてもよい。ラウンド鍵は、デジタル処理装置５が備える複数の回路部１０のそれぞれで異なる値を有していてもよい。個別置換回路６４は、ラウンド鍵の値に応じて、各ビットのビット位置の入れ替え方を異ならせる。例えば、２ビットのラウンド鍵の値が（０，１）の場合、個別置換回路６４は、個別置換回路６４に入力される３ビットのデータ（ｐ２，ｐ１，ｐ０）を、各ビットのビット位置を入れ替えたデータ（ｐ１，ｐ２，ｐ０）に置換する。ラウンド鍵の値が（１，０）の場合、個別置換回路６４は、データ（ｐ２，ｐ１，ｐ０）をデータ（ｐ２，ｐ０，ｐ１）に置換する。
【００６７】
各個別置換回路６４は置換処理を行うことでデータｄ７（第１部分データ）を生成する。各個別置換回路６４は、データｄ７を変換回路３１又は変換回路３２に出力する。なお、データｄ７は、データＤ７のうちの一部のデータであり、第２ビット数を有する。複数のデータｄ７は、データＤ７のＬＳＢからＭＳＢまでの全てのデータを、ビット番号順に第２ビット数単位で分割したデータである。図４では、１６個のデータｄ７によって、データＤ７が構成される。
【００６８】
処理部７は、データＤ７をデータＤｏｕｔ（第２データ）に変換する回路である。データＤｏｕｔは第１ビット数を有するデータである。具体的には、処理部７は、データＤ７の非線形変換処理を行うことでデータＤｏｕｔを生成する。処理部７は、データＤｏｕｔを回路部１０からの出力データとして出力する。処理部７では、複数の変換回路３１（複数の第１変換回路）及び複数の変換回路３２（複数の第２変換回路）が並列に配置される。各変換回路３１及び各変換回路３２には、データｄ７が入力される。複数の変換回路３１のそれぞれ及び複数の変換回路３２のそれぞれが、それぞれに入力されるデータｄ７を変換処理することで、処理部７はデータＤ７をデータＤｏｕｔに変換する。
【００６９】
各変換回路３１及び各変換回路３２は、データｄ７の変換処理を行うことで、データｄｏｕｔ（第２部分データ）を生成する。データｄｏｕｔは第２ビット数を有する。なお、データｄｏｕｔは、データＤｏｕｔのうちの一部のデータである。複数のデータｄｏｕｔは、データＤｏｕｔのＬＳＢからＭＳＢまでの全てのデータを、ビット番号順に第２ビット数単位で分割したデータである。図４では、１６個のデータｄｏｕｔによって、データＤｏｕｔが構成される。
【００７０】
処理部７では、データＤ７における第２ビット数のＮ倍（ここでは、Ｎ＝２）の第３ビット数のデータごとに複数の変換回路３１のうちのＮ個（ここでは、Ｎ＝２）の変換回路３１又は複数の変換回路３２のうちのＮ個（ここでは、Ｎ＝２）の変換回路３２が割り当てられる。具体的には、処理部７では、データＤ７のうちのＬＳＢから５番目のビットまでの２個のデータｄ７に対して、それぞれ変換回路３１が割り当てられる。データＤ７のうちの６番目から１１番目のビットまでの２個のデータｄ７に対して、それぞれ変換回路３１が割り当てられる。データＤ７のうちの１２番目から１７番目のビットまでの２個のデータｄ７に対して、それぞれ変換回路３１が割り当てられる。データＤ７のうちの１８番目から２３番目のビットまでの２個のデータｄ７に対して、それぞれ変換回路３１が割り当てられる。
【００７１】
処理部７では、データＤ７のうちの２４番目から２９番目のビットまでの２個のデータｄ７に対して、それぞれ変換回路３２が割り当てられる。データＤ７のうちの３０番目のビットから３５番目のビットまでの２個のデータｄ７に対して、それぞれ変換回路３２が割り当てられる。データＤ７のうちの３６番目から４１番目のビットまでの２個のデータｄ７に対して、それぞれ変換回路３２が割り当てられる。データＤ７のうちの４２番目のビットからＭＳＢまでの２個のデータｄ７に対して、それぞれ変換回路３２が割り当てられる。
【００７２】
図６は、第２実施形態に係るデジタル処理装置の変形例を示す図である。図６で示されるデジタル処理装置５Ａは、処理部７での複数の変換回路３１及び複数の変換回路３２の割り当て方において図４に示されるデジタル処理装置５と相違する。具体的には、デジタル処理装置５Ａでは、データＤ７のうちのＬＳＢから５番目のビットまでの２個のデータｄ７に対して、それぞれ変換回路３１が割り当てられる。データＤ７のうちの６番目から１１番目のビットまでの２個のデータｄ７に対して、それぞれ変換回路３２が割り当てられる。データＤ７のうちの１２番目から１７番目のビットまでの２個のデータｄ７に対して、それぞれ変換回路３１が割り当てられる。データＤ７のうちの１８番目から２３番目のビットまでの２個のデータｄ７に対して、それぞれ変換回路３２が割り当てられる。
【００７３】
デジタル処理装置５Ａでは、データＤ７のうちの２４番目から２９番目のビットまでの２個のデータｄ７に対して、それぞれ変換回路３１が割り当てられる。データＤ７のうちの３０番目から３５番目のビットまでの２個のデータｄ７に対して、それぞれ変換回路３２が割り当てられる。データＤ７のうちの３６番目から４１番目のビットまでの２個のデータｄ７に対して、それぞれ変換回路３１が割り当てられる。データＤ７のうちの４２番目のビットからＭＳＢまでの２個のデータｄ７に対して、それぞれ変換回路３２が割り当てられる。
【００７４】
第２実施形態に係るデジタル処理装置５，５Ａは、第１実施形態に係るデジタル処理装置１，１Ａと同様に、ＦＰＧＡを用いて製造される。デジタル処理装置５，５Ａの製造では、第１実施形態に係るデジタル処理装置１，１Ａの製造と同様に、線形処理部６及び処理部７を含む回路部１０の回路機能をハードウェア記述言語で記述したプログラムが作成される。
【００７５】
次に、第２実施形態に係るデジタル処理装置５，５Ａの効果の検証結果を説明する。表３及び表４は、ＦＰＧＡとしてＸｉｌｉｎｘ社のｓｐ６（製品名）を用いた場合の検証結果である。第３検証例は、図４に示されるデジタル処理装置５での検証結果である。第４検証例は、図６に示されるデジタル処理装置５Ａでの検証結果である。第３比較例は、処理部７が備える変換回路を全てルックアップテーブル記述方式に基づいて作成した場合の比較結果であり、第４比較例は、処理部７が備える変換回路を全てブール代数記述方式に基づいて作成した場合の比較結果である。第３検証例、第４検証例、第３比較例及び第４比較例におけるデジタル処理装置のそれぞれは、４８個の回路部を備える。表３にはＩＯ−Ｆｌｏａｔｅｄの場合での検証結果が示され、表４にはＩＯ−Ｓｔｕｃｋの場合での検証結果が示されている。回路合成の最適化オプションとしてＩＯ−Ｆｌｏａｔｅｄ及びＩＯ−Ｓｔｕｃｋのいずれの場合も動作速度を重視するが実装面積とのバランスも考慮するオプションを選択して、検証を行った。
【表３】
2019092045.tif 000005
【表４】
2019092045.tif 000006
【００７６】
表３及び表４に示されるように、第３検証例、第４検証例、第３比較例、及び第４比較例において、ＦＰＧＡ上で使用されたルックアップテーブルの個数は同じであった。IO-Floatedの場合、第３検証例の検証結果では、実装面積が第３比較例及び第４比較例と比べて小さくなり、さらに動作速度が第３比較例及び第４比較例と比べて速くなった。第４検証例の検証結果では、実装面積が第３比較例及び第４比較例と比べて小さくなり、さらに動作速度が第３比較例及び第４比較例と比べて速くなった。一方、IO-Stuckの場合、第３検証例の検証結果では、実装面積が第３比較例及び第４比較例と比べ小さくなり、さらに動作速度が第３比較例及び第４比較例と比べて速くなった。また、第４検証例の検証結果では、動作速度が第３比較例及び第４比較例と比べて速くなった。
【００７７】
ＩＯ−Ｆｌｏａｔｅｄの場合、第３検証例の検証結果では、第３比較例及び第４比較例のうちの消費電力が大きい比較例と比べて、消費電力が小さくなった。第４検証例の検証結果では、第３比較例及び第４比較例と比べて、消費電力が小さくなった。一方、ＩＯ−Ｓｔｕｃｋの場合、第３検証例及び第４検証例の検証結果では、第３比較例及び第４比較例と比べて、消費電力が小さくなった。以上のことから、第３検証例及び第４検証例では、第３比較例及び第４比較例と比べて、消費電力の大幅な増加をもたらすことなく、性能が向上したことがわかる。
【００７８】
このようなデジタル処理装置５，５Ａでは、ＸＯＲ演算回路６２ａ（単位処理回路）は、第２ビット数（３ビット）の２倍である第３ビット数（６ビット）を有する単位データを処理単位として線形処理を行う。また、処理部７では、ＸＯＲ演算回路６２ａ（単位処理回路）における処理単位ごとに２個の変換回路３１（第１変換回路）又は２個の変換回路３２（第２変換回路）が割り当てられる。処理部７では、異なる記述方式に基づいて作成された変換回路３１，３２が混在するとともに、処理単位ごとに同じ記述方式に基づいて作成された２個の変換回路３１，３２が割り当てられる。ＦＰＧＡ（プログラマブル論理デバイス）に作成される種々の回路は、ランダムに分散して配置されることを基本とするが、同じ記述方式に基づいた回路はまとまって配置される傾向がある。このため、処理単位ごとに同じ記述方式に基づいて作成された２個の変換回路３１，３２を割り当てることで、２個の変換回路３１，３２がまとまって配置される可能性が高まる。その結果、ＦＰＧＡに作成される回路の実装面積を小さくでき、又はその回路の処理速度を速めることができるので、デジタル処理装置の性能を向上させることが可能となる。
【００７９】
ＸＯＲ演算回路６２ａ（単位処理回路）は、単位データと、第３ビット数を有するデータ（ラウンド鍵）とのＸＯＲを演算する。ＸＯＲ演算回路６２ａの処理結果に基づくデータが、処理単位ごとに割り当てられた２個の変換回路３１に入力される。これらの２個の変換回路３１が、分散して配置されている場合、ＸＯＲ演算回路６２ａから置換回路６３を介して２個の変換回路３１までの配線の配線長の合計が大きくなる可能性がある。これに対して、上記２個の変換回路３１は、まとまって配置される傾向があるので、上記配線長の合計が小さくなる可能性が高まる。これにより、ＦＰＧＡに作成される回路の実装面積が低減され、処理速度が速くなる可能性が高まる。
【００８０】
なお、本発明に係るデジタル処理装置、デジタル処理装置の製造方法及びプログラムは上記実施形態に限定されない。
【００８１】
上記第１実施形態及び第２実施形態では、処理部３，７では、合計で同じ個数の変換回路３１及び変換回路３２が割り当てられているが、これに限られない。処理部３，７に複数の変換回路３１及び複数の変換回路３２が含まれていれば、変換回路３１の個数と変換回路３２の個数とは同じでなくてもよい。
【００８２】
処理部３，７は非線形変換処理を行っているが、これに限られない。処理部３はデータＤ１の線形変換処理を行ってもよく、処理部７はデータＤ７の線形変換処理を行ってもよい。
【００８３】
シャッフル回路４１ａ〜４１ｄ等の単位処理回路は、第２ビット数のＮ倍（Ｎは２以上の整数）である第３ビット数を有する単位データを処理単位として線形処理を行っていればよく、処理部３，７では、処理単位ごとにＮ個の変換回路３１又はＮ個の変換回路３２が割り当てられていればよい。
【００８４】
デジタル処理装置１，１Ａ，５，５Ａは、暗号処理を行うための装置であるが、これに限られない。デジタル処理装置１，１Ａ，５，５Ａは、フィルタ係数をテーブル参照回路によって読み取る信号処理装置であってもよい。その他、デジタル処理装置１，１Ａ，５，５Ａは、入力データの値を、入力データの値と異なる値を有する出力データに変換するテーブル参照処理を行う回路を備える装置であればよい。
【符号の説明】
【００８５】
１，５…デジタル処理装置、３，７…処理部、４，６…線形処理部、３１…変換回路、３２…変換回路。
【図１】
2019092045.tif 000007
【図２】
2019092045.tif 000008
【図３】
2019092045.tif 000009
【図４】
2019092045.tif 000010
【図５】
2019092045.tif 000011
【図６】
2019092045.tif 000012