(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-15
(45)【発行日】2023-06-23
(54)【発明の名称】デジタル処理装置、デジタル処理装置の製造方法及びプログラム
(51)【国際特許分類】
H03K 19/17728 20200101AFI20230616BHJP
【FI】
H03K19/17728
(21)【出願番号】P 2017219439
(22)【出願日】2017-11-14
【審査請求日】2020-09-15
【前置審査】
(73)【特許権者】
【識別番号】506209422
【氏名又は名称】地方独立行政法人東京都立産業技術研究センター
(74)【代理人】
【識別番号】100088155
【氏名又は名称】長谷川 芳樹
(74)【代理人】
【識別番号】100128381
【氏名又は名称】清水 義憲
(74)【代理人】
【識別番号】100124062
【氏名又は名称】三上 敬史
(74)【代理人】
【識別番号】100212026
【氏名又は名称】中村 真生
(74)【代理人】
【識別番号】100223424
【氏名又は名称】和田 雄二
(74)【代理人】
【識別番号】100208524
【氏名又は名称】小曳 満昭
(72)【発明者】
【氏名】岡部 忠
【審査官】及川 尚人
(56)【参考文献】
【文献】特開2008-153806(JP,A)
【文献】米国特許出願公開第2004/0228482(US,A1)
【文献】特開2014-041389(JP,A)
【文献】特開2002-023622(JP,A)
【文献】特開2012-109854(JP,A)
【文献】特表2008-514975(JP,A)
【文献】木村 真也 Shinya Kimura,HDL記述による設計法をマスタする 実験で学ぶロジック回路設計,トランジスタ技術 第44巻 第5号 ,日本,CQ出版株式会社,第44巻
(58)【調査した分野】(Int.Cl.,DB名)
H03K 19/098-19/23
(57)【特許請求の範囲】
【請求項1】
プログラマブル論理デバイスを用いて作成され、入力データのデータ変換を行うデジタル処理装置であって、
第1ビット数を有する第1データを、前記第1ビット数を有する第2データに変換する処理部と、
前記第2データの線形処理を行う線形処理部と、
を備え、
前記処理部は、ルックアップテーブルを用いて回路機能を記述したプログラムに基づいて作成された複数の第1変換回路と、ブール代数を用いて回路機能を記述したプログラムに基づいて作成された複数の第2変換回路とを有し、
前記処理部では、前記複数の第1変換回路の少なくとも一部と、前記複数の第2変換回路の少なくとも一部とのそれぞれが、
プログラマブル論理デバイスに作成される種々の回路は、異なる記述方式を混在させた場合に、同じ記述方式に基づいた回路はまとまって配置される傾向があるという性質により、前記プログラマブル論理デバイス上でまとまって配置されており、
前記複数の第1変換回路のそれぞれ及び前記複数の第2変換回路のそれぞれは、前記第1データのうちの第2ビット数を有する第1部分データを、前記第2データのうちの前記第2ビット数を有する第2部分データに変換し、
前記線形処理部は、前記第2ビット数のN倍(Nは2以上の整数)である第3ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有し、
前記処理部では、前記処理単位ごとに、前記複数の第1変換回路のうちのN個の第1変換回路又は前記複数の第2変換回路のうちのN個の第2変換回路が割り当てられる、
デジタル処理装置。
【請求項2】
前記単位処理回路は、前記単位データに含まれるN個の前記第2部分データの並び順を変更する、
請求項1に記載のデジタル処理装置。
【請求項3】
前記単位処理回路は、前記単位データを所定ビット数シフトする、
請求項1に記載のデジタル処理装置。
【請求項4】
プログラマブル論理デバイスを用いて作成され、入力データのデータ変換を行うデジタル処理装置であって、
所定のデータの線形処理を行い、第1ビット数を有する第1データを出力する線形処理部と、
前記第1データを、前記第1ビット数を有する第2データに変換する処理部と、
を備え、
前記処理部は、ルックアップテーブルを用いて回路機能を記述したプログラムに基づいて作成された複数の第1変換回路と、ブール代数を用いて回路機能を記述したプログラムに基づいて作成された複数の第2変換回路とを有し、
前記処理部では、前記複数の第1変換回路の少なくとも一部と、前記複数の第2変換回路の少なくとも一部とのそれぞれが、
プログラマブル論理デバイスに作成される種々の回路は、異なる記述方式を混在させた場合に、同じ記述方式に基づいた回路はまとまって配置される傾向があるという性質により、前記プログラマブル論理デバイス上でまとまって配置されており、
前記複数の第1変換回路のそれぞれ及び前記複数の第2変換回路のそれぞれは、前記第1データのうちの第2ビット数を有する第1部分データを、前記第2データのうちの前記第2ビット数を有する第2部分データに変換し、
前記線形処理部は、前記第2ビット数のN倍(Nは2以上の整数)である第3ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有し、
前記処理部では、前記処理単位ごとに、前記複数の第1変換回路のうちのN個の第1変換回路又は前記複数の第2変換回路のうちのN個の第2変換回路が割り当てられる、
デジタル処理装置。
【請求項5】
前記単位処理回路は、前記単位データと、前記第3ビット数を有するデータとの排他的論理和を演算する、
請求項4に記載のデジタル処理装置。
【請求項6】
前記複数の第1変換回路のそれぞれ及び前記複数の第2変換回路のそれぞれは、非線形変換処理を行う、
請求項1から請求項5のいずれか一項に記載のデジタル処理装置。
【請求項7】
複数の第1変換回路及び複数の第2変換回路を有し、第1ビット数を有する第1データを、前記第1ビット数を有する第2データに変換する処理部と、前記第2データの線形処理を行う線形処理部と、を備えるデジタル処理装置の製造方法であって、
プログラマブル論理デバイスに応じて、前記処理部及び前記線形処理部の回路機能をプログラムによって記述する記述工程と、
前記回路機能に基づき、前記プログラマブル論理デバイスにおいて前記処理部及び前記線形処理部を作成する作成工程と、
を備え、
前記デジタル処理装置は、入力データのデータ変換を行う装置であり、
前記複数の第1変換回路のそれぞれ及び前記複数の第2変換回路のそれぞれは、前記第1データのうちの第2ビット数を有する第1部分データを、前記第2データのうちの前記第2ビット数を有する第2部分データに変換し、
前記線形処理部は、前記第2ビット数のN倍(Nは2以上の整数)である第3ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有し、
前記処理部では、前記処理単位ごとに、前記複数の第1変換回路のうちのN個の第1変換回路又は前記複数の第2変換回路のうちのN個の第2変換回路が割り当てられ、
前記処理部では、前記複数の第1変換回路の少なくとも一部と、前記複数の第2変換回路の少なくとも一部とのそれぞれが、
プログラマブル論理デバイスに作成される種々の回路は、異なる記述方式を混在させた場合に、同じ記述方式に基づいた回路はまとまって配置される傾向があるという性質により、前記プログラマブル論理デバイス上でまとまって配置されており、
前記記述工程では、ルックアップテーブルを用いて回路機能を記述したプログラムによって前記複数の第1変換回路の回路機能が記述され、ブール代数を用いて回路機能を記述したプログラムによって前記複数の第2変換回路の回路機能が記述される、
デジタル処理装置の製造方法。
【請求項8】
所定のデータの線形処理を行い、第1ビット数を有する第1データを出力する線形処理部と、複数の第1変換回路及び複数の第2変換回路を有し、前記第1データを、前記第1ビット数を有する第2データに変換する処理部と、を備えるデジタル処理装置の製造方法であって、
プログラマブル論理デバイスに応じて、前記処理部及び前記線形処理部の回路機能をプログラムによって記述する記述工程と、
前記回路機能に基づき、前記プログラマブル論理デバイスにおいて前記処理部及び前記線形処理部を作成する作成工程と、
を備え、
前記デジタル処理装置は、入力データのデータ変換を行う装置であり、
前記複数の第1変換回路のそれぞれ及び前記複数の第2変換回路のそれぞれは、前記第1データのうちの第2ビット数を有する第1部分データを、前記第2データのうちの前記第2ビット数を有する第2部分データに変換し、
前記線形処理部は、前記第2ビット数のN倍(Nは2以上の整数)である第3ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有し、
前記処理部では、前記処理単位ごとに、前記複数の第1変換回路のうちのN個の第1変換回路又は前記複数の第2変換回路のうちのN個の第2変換回路が割り当てられ、
前記処理部では、前記複数の第1変換回路の少なくとも一部と、前記複数の第2変換回路の少なくとも一部とのそれぞれが、
プログラマブル論理デバイスに作成される種々の回路は、異なる記述方式を混在させた場合に、同じ記述方式に基づいた回路はまとまって配置される傾向があるという性質により、前記プログラマブル論理デバイス上でまとまって配置されており、
前記記述工程では、ルックアップテーブルを用いて回路機能を記述したプログラムによって前記複数の第1変換回路の回路機能が記述され、ブール代数を用いて回路機能を記述したプログラムによって前記複数の第2変換回路の回路機能が記述される、
デジタル処理装置の製造方法。
【請求項9】
複数の第1変換回路及び複数の第2変換回路を有し、第1ビット数を有する第1データを、前記第1ビット数を有する第2データに変換する処理部と、前記第2データの線形処理を行う線形処理部と、を備えるデジタル処理装置としてプログラマブル論理デバイスを機能させるためのプログラムであって、
前記プログラマブル論理デバイスに前記複数の第1変換回路を作成するための第1部分と、
前記プログラマブル論理デバイスに前記複数の第2変換回路を作成するための第2部分と、
を備え、
前記第1部分では、ルックアップテーブルを用いて前記複数の第1変換回路の回路機能が記述され、
前記第2部分では、ブール代数を用いて前記複数の第2変換回路の回路機能が記述され、
前記デジタル処理装置は、入力データのデータ変換を行う装置であり、
前記複数の第1変換回路のそれぞれ及び前記複数の第2変換回路のそれぞれは、前記第1データのうちの第2ビット数を有する第1部分データを、前記第2データのうちの前記第2ビット数を有する第2部分データに変換し、
前記線形処理部は、前記第2ビット数のN倍(Nは2以上の整数)である第3ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有し、
前記処理部では、前記処理単位ごとに、前記複数の第1変換回路のうちのN個の第1変換回路又は前記複数の第2変換回路のうちのN個の第2変換回路が割り当てられ、
前記処理部では、前記複数の第1変換回路の少なくとも一部と、前記複数の第2変換回路の少なくとも一部とのそれぞれが、
プログラマブル論理デバイスに作成される種々の回路は、異なる記述方式を混在させた場合に、同じ記述方式に基づいた回路はまとまって配置される傾向があるという性質により、前記プログラマブル論理デバイス上でまとまって配置されている、
プログラム。
【請求項10】
所定のデータの線形処理を行い、第1ビット数を有する第1データを出力する線形処理部と、複数の第1変換回路及び複数の第2変換回路を有し、前記第1データを、前記第1ビット数を有する第2データに変換する処理部と、を備えるデジタル処理装置としてプログラマブル論理デバイスを機能させるためのプログラムであって、
前記プログラマブル論理デバイスに前記複数の第1変換回路を作成するための第1部分と、
前記プログラマブル論理デバイスに前記複数の第2変換回路を作成するための第2部分と、
を備え、
前記第1部分では、ルックアップテーブルを用いて前記複数の第1変換回路の回路機能が記述され、
前記第2部分では、ブール代数を用いて前記複数の第2変換回路の回路機能が記述され、
前記デジタル処理装置は、入力データのデータ変換を行う装置であり、
前記複数の第1変換回路のそれぞれ及び前記複数の第2変換回路のそれぞれは、前記第1データのうちの第2ビット数を有する第1部分データを、前記第2データのうちの前記第2ビット数を有する第2部分データに変換し、
前記線形処理部は、前記第2ビット数のN倍(Nは2以上の整数)である第3ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有し、
前記処理部では、前記処理単位ごとに、前記複数の第1変換回路のうちのN個の第1変換回路又は前記複数の第2変換回路のうちのN個の第2変換回路が割り当てられ、
前記処理部では、前記複数の第1変換回路の少なくとも一部と、前記複数の第2変換回路の少なくとも一部とのそれぞれが、
プログラマブル論理デバイスに作成される種々の回路は、異なる記述方式を混在させた場合に、同じ記述方式に基づいた回路はまとまって配置される傾向があるという性質により、前記プログラマブル論理デバイス上でまとまって配置されている、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デジタル処理装置、デジタル処理装置の製造方法及びプログラムに関する。
【背景技術】
【0002】
ASIC(Application Specific Integrated Circuit)及びFPGA(Field Programmable Gate Array)といったLSI(Large Scale Integrated Circuit)を使った製品が、テーブル参照処理を必要とするデジタル処理装置に用いられることが知られている。このようなデジタル処理装置として、例えば、フィルタ係数をテーブルから参照しフィルタ処理を行う信号処理装置及びテーブル参照処理によって非線形変換処理を行うセキュリティ(暗号処理)装置が挙げられる。FPGA等のプログラマブル論理デバイスでは、ハードマクロ及びソフトマクロが用いられる。ソフトマクロでは、ハードウェア記述言語(HDL;Hardware Description Language)を用いてテーブル参照処理の回路設計が行われる(例えば、特許文献1参照)。
【0003】
ハードウェア記述言語を用いた記述方式には、ルックアップテーブル(LUT;Look-Up-Table)を用いる記述方式、ブール代数(Boolean algebra)を用いる記述方式及び有限体理論における拡大体を用いる記述方式がある。ブール代数を用いる記述方式では、一意にブール代数で記述する必要があり、その煩雑さからブール代数を用いる記述方式が使用される機会はあまり多くない。有限体理論における拡大体を用いる記述方式では、性能面の大きな向上が見込めるが、理論の難しさのために実用性に乏しい。このような状況において、簡便性の観点からルックアップテーブルを用いる記述方式が頻繁に使用される。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、ルックアップテーブルを用いる記述方式のみによってテーブル参照処理の回路設計がされたデジタル処理装置には、性能面において改善の余地がある。
【0006】
本発明は、性能を向上させることが可能なデジタル処理装置、デジタル処理装置の製造方法及びプログラムを提供する。
【課題を解決するための手段】
【0007】
本発明の一側面に係るデジタル処理装置は、プログラマブル論理デバイスを用いて作成されたデジタル処理装置であって、第1ビット数を有する第1データを、第1ビット数を有する第2データに変換する処理部と、第2データの線形処理を行う線形処理部と、を備える。処理部は、ルックアップテーブル記述方式に基づいて作成された複数の第1変換回路と、ブール代数記述方式に基づいて作成された複数の第2変換回路とを有し、複数の第1変換回路のそれぞれ及び複数の第2変換回路のそれぞれは、第1データのうちの第2ビット数を有する第1部分データを、第2データのうちの第2ビット数を有する第2部分データに変換する。線形処理部は、第2ビット数のN倍(Nは2以上の整数)である第3ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有し、処理部では、処理単位ごとに、複数の第1変換回路のうちのN個の第1変換回路又は複数の第2変換回路のうちのN個の第2変換回路が割り当てられる。
【0008】
このデジタル処理装置では、処理単位ごとにN個の第1変換回路又はN個の第2変換回路が割り当てられる。そのため、処理部では、異なる記述方式に基づいて作成された変換回路が混在するとともに、線形処理部が有する単位処理回路の処理単位ごとに同じ記述方式に基づいて作成されたN個の変換回路が割り当てられる。プログラマブル論理デバイスに作成される種々の回路は、ランダムに分散して配置されることを基本とするが、同じ記述方式に基づいた回路はまとまって配置される傾向がある。このため、処理単位ごとに同じ記述方式に基づいて作成されたN個の変換回路を割り当てることで、N個の変換回路がまとまって配置される可能性が高まる。その結果、プログラマブル論理デバイスに作成される回路の実装面積を小さくでき、又はその回路の処理速度を速めることができるので、デジタル処理装置の性能を向上させることが可能となる。
【0009】
単位処理回路は、単位データに含まれるN個の第2部分データの並び順を変更してもよい。単位処理回路が処理するN個の第2部分データを供給するN個の変換回路は、まとまって配置される傾向があるので、N個の変換回路から単位処理回路までの配線の配線長の合計が小さくなる可能性が高まる。これにより、プログラマブル論理デバイスに作成される回路の実装面積が低減され、処理速度が速くなる可能性が高まる。
【0010】
単位処理回路は、単位データを所定ビット数シフトしてもよい。単位処理回路が処理する単位データを供給するN個の変換回路は、まとまって配置される傾向があるので、N個の変換回路から単位処理回路までの配線の配線長の合計が小さくなる可能性が高まる。これにより、プログラマブル論理デバイスに作成される回路の実装面積が低減され、処理速度が速くなる可能性が高まる。
【0011】
本発明の一側面に係るデジタル処理装置は、プログラマブル論理デバイスを用いて作成されたデジタル処理装置であって、所定のデータの線形処理を行い、第1ビット数を有する第1データを出力する線形処理部と、第1データを、第1ビット数を有する第2データに変換する処理部と、を備える。処理部は、ルックアップテーブル記述方式に基づいて作成された複数の第1変換回路と、ブール代数記述方式に基づいて作成された複数の第2変換回路とを有し、複数の第1変換回路のそれぞれ及び複数の第2変換回路のそれぞれは、第1データのうちの第2ビット数を有する第1部分データを、第2データのうちの第2ビット数を有する第2部分データに変換する。線形処理部は、第2ビット数のN倍(Nは2以上の整数)である第3ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有し、処理部では、処理単位ごとに、複数の第1変換回路のうちのN個の第1変換回路又は複数の第2変換回路のうちのN個の第2変換回路が割り当てられる。
【0012】
このデジタル処理装置では、処理単位ごとにN個の第1変換回路又はN個の第2変換回路が割り当てられる。そのため、上述のデジタル処理装置と同様に、デジタル処理装置の性能を向上させることが可能となる。
【0013】
単位処理回路は、単位データと、第3ビット数を有するデータとの排他的論理和を演算してもよい。単位処理回路の処理結果に基づくデータが供給されるN個の変換回路は、まとまって配置される傾向があるので、単位処理回路からN個の変換回路までの配線の配線長の合計が小さくなる可能性が高まる。これにより、プログラマブル論理デバイスに作成される回路の実装面積が低減され、処理速度が速くなる可能性が高まる。
【0014】
複数の第1変換回路のそれぞれ及び複数の第2変換回路のそれぞれは、非線形変換処理を行ってもよい。この場合、デジタル処理装置の出力データから、デジタル処理装置の入力データを推測され難くすることが可能となる。
【0015】
本発明の別の側面に係るデジタル処理装置の製造方法は、複数の第1変換回路及び複数の第2変換回路を有し、第1ビット数を有する第1データを、第1ビット数を有する第2データに変換する処理部と、第2データの線形処理を行う線形処理部と、を備えるデジタル処理装置の製造方法であって、プログラマブル論理デバイスに応じて、処理部及び線形処理部の回路機能を記述する記述工程と、回路機能に基づき、プログラマブル論理デバイスにおいて処理部及び線形処理部を作成する作成工程と、を備える。複数の第1変換回路のそれぞれ及び複数の第2変換回路のそれぞれは、第1データのうちの第2ビット数を有する第1部分データを、第2データのうちの第2ビット数を有する第2部分データに変換し、線形処理部は、第2ビット数のN倍(Nは2以上の整数)である第3ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有する。処理部では、処理単位ごとに、複数の第1変換回路のうちのN個の第1変換回路又は複数の第2変換回路のうちのN個の第2変換回路が割り当てられ、記述工程では、ルックアップテーブル記述方式によって複数の第1変換回路の回路機能が記述され、ブール代数記述方式によって複数の第2変換回路の回路機能が記述される。
【0016】
このデジタル処理装置の製造方法では、ルックアップテーブル記述方式によって複数の第1変換回路の回路機能が記述され、ブール代数記述方式によって複数の第2変換回路の回路機能が記述される。さらに処理部では、処理単位ごとにN個の第1変換回路又はN個の第2変換回路が割り当てられる。そのため、上述のデジタル処理装置と同様に、デジタル処理装置の性能を向上させることが可能となる。
【0017】
本発明の別の側面に係るデジタル処理装置の製造方法は、所定のデータの線形処理を行い、第1ビット数を有する第1データを出力する線形処理部と、複数の第1変換回路及び複数の第2変換回路を有し、第1データを、第1ビット数を有する第2データに変換する処理部と、を備えるデジタル処理装置の製造方法であって、プログラマブル論理デバイスに応じて、処理部及び線形処理部の回路機能を記述する記述工程と、回路機能に基づき、プログラマブル論理デバイスにおいて処理部及び線形処理部を作成する作成工程と、を備える。複数の第1変換回路のそれぞれ及び複数の第2変換回路のそれぞれは、第1データのうちの第2ビット数を有する第1部分データを、第2データのうちの第2ビット数を有する第2部分データに変換し、線形処理部は、第2ビット数のN倍(Nは2以上の整数)である第3ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有する。処理部では、処理単位ごとに、複数の第1変換回路のうちのN個の第1変換回路又は複数の第2変換回路のうちのN個の第2変換回路が割り当てられ、記述工程では、ルックアップテーブル記述方式によって複数の第1変換回路の回路機能が記述され、ブール代数記述方式によって複数の第2変換回路の回路機能が記述される。
【0018】
このデジタル処理装置の製造方法では、ルックアップテーブル記述方式によって複数の第1変換回路の回路機能が記述され、ブール代数記述方式によって複数の第2変換回路の回路機能が記述される。さらに処理部では、処理単位ごとにN個の第1変換回路又はN個の第2変換回路が割り当てられる。そのため、上述のデジタル処理装置と同様に、デジタル処理装置の性能を向上させることが可能となる。
【0019】
本発明のさらに別の側面に係るプログラムは、複数の第1変換回路及び複数の第2変換回路を有し、第1ビット数を有する第1データを、第1ビット数を有する第2データに変換する処理部と、第2データの線形処理を行う線形処理部と、を備えるデジタル処理装置としてプログラマブル論理デバイスを機能させるためのプログラムであって、プログラマブル論理デバイスに複数の第1変換回路を作成するための第1部分と、プログラマブル論理デバイスに複数の第2変換回路を作成するための第2部分と、を備える。第1部分は、ルックアップテーブル記述方式を用いて記述され、第2部分は、ブール代数記述方式を用いて記述され、複数の第1変換回路のそれぞれ及び複数の第2変換回路のそれぞれは、第1データのうちの第2ビット数を有する第1部分データを、第2データのうちの第2ビット数を有する第2部分データに変換する。線形処理部は、第2ビット数のN倍(Nは2以上の整数)である第3ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有し、処理部では、処理単位ごとに、複数の第1変換回路のうちのN個の第1変換回路又は複数の第2変換回路のうちのN個の第2変換回路が割り当てられる。
【0020】
このプログラムでは、第1部分は、ルックアップテーブル記述方式を用いて記述され、第2部分は、ブール代数記述方式を用いて記述される。さらに処理部では、処理単位ごとにN個の第1変換回路又はN個の第2変換回路が割り当てられる。そのため、上述のデジタル処理装置と同様に、デジタル処理装置の性能を向上させることが可能となる。
【0021】
本発明のさらに別の側面に係るプログラムは、所定のデータの線形処理を行い、第1ビット数を有する第1データを出力する線形処理部と、複数の第1変換回路及び複数の第2変換回路を有し、第1データを、第1ビット数を有する第2データに変換する処理部と、を備えるデジタル処理装置としてプログラマブル論理デバイスを機能させるためのプログラムであって、プログラマブル論理デバイスに複数の第1変換回路を作成するための第1部分と、プログラマブル論理デバイスに複数の第2変換回路を作成するための第2部分と、を備える。第1部分は、ルックアップテーブル記述方式を用いて記述され、第2部分は、ブール代数記述方式を用いて記述され、複数の第1変換回路のそれぞれ及び複数の第2変換回路のそれぞれは、第1データのうちの第2ビット数を有する第1部分データを、第2データのうちの第2ビット数を有する第2部分データに変換する。線形処理部は、第2ビット数のN倍(Nは2以上の整数)である第3ビット数を有する単位データを処理単位として線形処理を行う単位処理回路を有し、処理部では、処理単位ごとに、複数の第1変換回路のうちのN個の第1変換回路又は複数の第2変換回路のうちのN個の第2変換回路が割り当てられる。
【0022】
このプログラムでは、第1部分は、ルックアップテーブル記述方式を用いて記述され、第2部分は、ブール代数記述方式を用いて記述される。さらに処理部では、処理単位ごとにN個の第1変換回路又はN個の第2変換回路が割り当てられる。そのため、上述のデジタル処理装置と同様に、デジタル処理装置の性能を向上させることが可能となる。
【発明の効果】
【0023】
本発明によれば、デジタル処理装置の性能を向上させることが可能となる。
【図面の簡単な説明】
【0024】
【
図1】
図1は、第1実施形態に係るデジタル処理装置の構成を示す図である。
【
図3】
図3は、第1実施形態に係るデジタル処理装置の変形例を示すである。
【
図4】
図4は、第2実施形態に係るデジタル処理装置の構成を示す図である。
【
図5】
図5は、
図4の配列変換回路の配列変換処理を説明するための図である。
【
図6】
図6は、第2実施形態に係るデジタル処理装置の変形例を示す図である。
【発明を実施するための形態】
【0025】
以下、添付図面を参照しながら本発明の実施形態の詳細を説明する。図面の説明において、同一又は同等の要素には同一符号が用いられ、重複する説明は省略される。
【0026】
図1は、第1実施形態に係るデジタル処理装置の構成を示す図である。
図2は、
図1の線形処理部の詳細構成を示す図である。
図1に示されるデジタル処理装置1は、BORON規格に準拠した暗号処理を行うための装置である。デジタル処理装置1は、プログラマブル論理デバイスを用いて作成される。プラグラマブル論理デバイスとしては、例えば、FPGA及びPLD(Programmable Logic Device)が用いられる。
【0027】
デジタル処理装置1は、暗号データ生成部2、処理部3、及び線形処理部4を備える。デジタル処理装置1は、暗号データ生成部2、処理部3、及び線形処理部4によって、第1ビット数(
図1では64ビット)を有する入力データをデジタル処理することで、第1ビット数を有する出力データを出力する。なお
図1では、暗号データ生成部2、処理部3、及び線形処理部4は、それぞれ1つずつ示されているが、デジタル処理装置1は、暗号データ生成部2、処理部3、及び線形処理部4を1つの回路部10として、複数の回路部10を備えている。複数の回路部10は、直列に接続されており、互いに隣り合う2つの回路部10,10では、前段の回路部10から出力されたデータDoutが、後段の回路部10にデータDinとして入力される。なお、データDinに含まれる各ビットには、LSB(Least Significant Bit;最下位ビット)からMSB(Most Significant Bit;最上位ビット)まで昇順でビット番号が割り当てられている。本実施形態では、LSBのビット番号は0番で、MSBのビット番号は63番である。データDout、及び後述のデータD1,D2,D3,D4についても同様である。
【0028】
暗号データ生成部2は、暗号鍵データに基づきデータDinを論理演算する回路である。具体的には、暗号データ生成部2は、データDinと暗号鍵データとのXOR(排他的論理和)を演算する。データDinは、第1ビット数を有するデータである。暗号鍵データは、予め不図示のメモリに記憶されており、メモリから暗号データ生成部2に入力される。暗号鍵データは、不図示の暗号鍵生成回路によって逐次生成され、暗号鍵生成回路から暗号データ生成部2に入力されてもよい。暗号鍵データは、第1ビット数を有する。暗号データ生成部2は、演算結果をデータD1(第1データ)として処理部3に出力する。データD1は、第1ビット数を有するデータである。
【0029】
処理部3は、データD1をデータD2(第2データ)に変換する回路である。データD2は、第1ビット数を有するデータである。具体的には、処理部3は、データD1の非線形変換処理を行うことでデータD2を生成する。処理部3は、データD2を線形処理部4に出力する。処理部3は、複数の変換回路31(複数の第1変換回路)及び複数の変換回路32(複数の第2変換回路)を有する。複数の変換回路31及び複数の変換回路32は、並列に配置されており、各変換回路31及び各変換回路32には、データd1(第1部分データ)が入力される。データd1は、データD1のうちの一部のデータであり、第2ビット数(
図1では4ビット)を有する。データd1は、データD1のLSBからMSBまでの全てのデータを、ビット番号順に第2ビット数単位で分割したデータである。
図1では、16個のデータd1によって、データD1が構成される。複数の変換回路31のそれぞれ及び複数の変換回路32のそれぞれが、それぞれに入力されるデータd1を変換処理することで、処理部3はデータD1をデータD2に変換する。
【0030】
変換回路31は、ルックアップテーブルを用いる記述方式(ルックアップテーブル記述方式)に基づいて作成された回路である。変換回路32は、ブール代数を用いる記述方式(ブール代数記述方式)に基づいて作成された回路である。変換回路31及び変換回路32は、互いに等価な機能を有する。
【0031】
変換回路31,32は、データd1を変換処理する回路である。具体的には、変換回路31,32は、データd1をデータd2(第2部分データ)に変換する。データd2は、データD2のうちの一部のデータであり、第2ビット数を有する。データd2は、データD2のLSBからMSBまでの全てのデータを、ビット番号順に第2ビット数単位で分割したデータである。
図1では、16個のデータd2によって、データD2が構成される。変換回路31,32は、データd1とデータd2との関係を定めた真理値表等に基づいたテーブル参照回路を実現する論理演算回路である。変換回路31,32は、S-BOX(substitution box)とも称される。
【0032】
処理部3では、データD1のうちの第2ビット数のN倍(Nは2以上の整数)の第3ビット数(
図1では16ビット)のデータごとに複数の変換回路31のうちのN個の変換回路31又は複数の変換回路32のうちのN個の変換回路32が割り当てられる。なお本実施形態では、N=4である。具体的には、処理部3では、データD1のうちのLSBから15番目のビットまでの4個のデータd1に対して、それぞれ変換回路32が割り当てられる。データD1のうち16番目から31番目のビットまでの4個のデータd1に対して、それぞれ変換回路31が割り当てられる。データD1のうちの32番目から47番目のビットまでの4個のデータd1に対して、それぞれ変換回路32が割り当てられる。データD1のうちの48番目のビットからMSBまでの4個のデータd1に対して、それぞれ変換回路31が割り当てられる。
【0033】
線形処理部4は、データD2を線形処理する回路である。線形処理部4は、データD2を線形処理することで、データDoutを生成する。データDoutは、第1ビット数を有するデータである。線形処理部4は、データDoutを回路部10からの出力データとして出力する。線形処理部4は、シャッフル回路41、シフト回路42、及びXOR実行回路43を有する。
【0034】
シャッフル回路41は、データD2に対してシャッフル処理を施す回路である。シャッフル処理とは、データD2に含まれる並列に配置された複数のデータd2の並び順を変更する処理である。シャッフル回路41は、データD2のシャッフル処理を行うことでデータD3を生成する。シャッフル回路41は、データD3をシフト回路42に出力する。データD3は第1ビット数を有するデータである。シャッフル回路41は、
図2に示されるように、複数(ここでは、4つ)のシャッフル回路41a~41d(単位処理回路)を有する。シャッフル回路41a~41dのそれぞれは、第3ビット数を有する単位データを処理単位として、シャッフル処理(線形処理)を行う回路である。シャッフル回路41a~41dのそれぞれは、単位データに含まれるN個(ここでは、N=4)のデータd2の並び順を変更する。シャッフル回路41a~41dは並列に配置され、シャッフル回路41a~41dのそれぞれは、4個の変換回路31及び4個の変換回路32のいずれかに割り当てられる。
【0035】
具体的には、シャッフル回路41aは、4個の変換回路32に割り当てられており、データD2のうちのLSBから15番目のビットまでの4つのデータd2を単位データとしてシャッフル処理を行う。シャッフル回路41aは、シャッフル処理結果をデータd3aとして後述のシフト回路42aに出力する。シャッフル回路41aは、データD2のうちのLSBから3番目のビットまでのデータd2を、データd3aにおける8番目から11番目のビット位置に配置し、データD2のうちの4番目から7番目のビットまでのデータd2を、データd3aにおける12番目から15番目のビット位置に配置する。シャッフル回路41aは、データD2のうちの8番目から11番目のビットまでのデータd2を、データd3aにおけるLSBから3番目のビット位置に配置し、データD2のうちの12番目から15番目のビットまでのデータd2を、データd3aにおける4番目から7番目のビット位置に配置する。
【0036】
シャッフル回路41bは、4個の変換回路31に割り当てられており、データD2のうちの16番目から31番目のビットまでの4つのデータd2を単位データとしてシャッフル処理を行う。シャッフル回路41bは、シャッフル処理結果をデータd3bとして後述のシフト回路42bに出力する。シャッフル回路41cは、4個の変換回路32に割り当てられており、データD2のうちの32番目から47番目のビットまでの4つのデータd2を単位データとしてシャッフル処理を行う。シャッフル回路41cは、シャッフル処理結果をデータd3cとして後述のシフト回路42cに出力する。シャッフル回路41dは、4個の変換回路31に割り当てられており、データD2のうちの48番目のビットからMSBまでの4つのデータd2を単位データとしてシャッフル処理を行う。シャッフル回路41dは、シャッフル処理結果をデータd3dとして後述のシフト回路42dに出力する。
【0037】
なお、データd3a~d3dは、データD3のうちの一部のデータであり、第3ビット数を有する。データd3a~d3dは、データD3のLSBからMSBまでの全てのデータを、ビット番号順に第3ビット数単位で分割したデータである。
図2では、データd3a~d3dによって、データD3が構成される。シャッフル回路41b~41dは、シャッフル処理を施す複数(ここでは、4つ)のデータd2が異なる点を除きシャッフル回路41aと同様に複数のデータd2の並び順を変更するので、詳細な説明を省略する。なお、
図2に示されるシャッフル回路41a~41dでは、4ビットのデータが1本の線にまとめられて示されている。
【0038】
シフト回路42は、データD3に対してシフト処理を施す回路である。シフト処理とは、データD3に含まれるデータd3a~d3dのそれぞれを所定のビット数シフトする処理である。シフト回路42は、データD3のシフト処理を行うことでデータD4を生成する。シフト回路42は、データD4をXOR実行回路43に出力する。データD4は第1ビット数を有するデータである。シフト回路42は、複数(ここでは、4つ)のシフト回路42a~42d(単位処理回路)を有する。シフト回路42a~42dは、並列に配置され、データd3a~d3dにそれぞれ割り当てられる。シフト回路42a~42dのそれぞれは、第3ビット数を有する単位データを処理単位として、左シフト処理(線形処理)を行う。
【0039】
具体的には、シフト回路42aは、データd3aを単位データとして、データd3aを1ビットシフト(左シフト)する。左シフトとは、シフトさせる対象のデータに含まれる全てのビットを、所定のビット数上位にサイクリックにずらす処理である。シフト回路42aは、シフト処理結果をデータd4aとして後述のXOR演算回路43a,43cに出力する。シフト回路42aのシフト処理では、例えば、データd3aのうちのLSBに位置するビットは、データd4aにおける1番目のビット位置にシフトされ、データd3aのうちの1番目のビットは、データd4aにおける2番目のビット位置にシフトされ、データd3aのうちの15番目のビットは、データd4aにおけるLSBのビット位置にシフトされる。
【0040】
シフト回路42bは、データd3bを単位データとして、データd3bを4ビット左シフトする。シフト回路42bは、シフト処理結果をデータd4bとして後述のXOR演算回路43bに出力する。シフト回路42cは、データd3cを単位データとして、データd3cを7ビット左シフトする。シフト回路42cは、シフト処理結果をデータd4cとして後述のXOR演算回路43cに出力する。シフト回路42dは、データd3dを単位データとして、データd3dを9ビット左シフトする。シフト回路42dは、シフト処理結果をデータd4dとして後述のXOR演算回路43b,43dに出力する。なお、データd4a~d4dは、データD4のうちの一部のデータであり、第3ビット数を有する。データd4a~d4dは、データD4のLSBからMSBまでの全てのデータを、ビット番号順に第3ビット数単位で分割したデータである。
図2では、データd4a~d4dによって、データD4が構成される。なお、
図2では、16ビットのデータが1本の線にまとめられて、データd3a~d3d及びデータd4a~d4dが示されている。
【0041】
XOR実行回路43は、データD4に対してXOR演算処理を施す回路である。XOR実行回路43は、データD4のXOR演算処理を行うことでデータDoutを生成する。XOR実行回路43は、データDoutを回路部10からの出力データとして出力する。XOR実行回路43は、複数(ここでは、4つ)のXOR演算回路43a~43dを有する。XOR演算回路43a~43dは、並列に配置され、データd4a~d4dのそれぞれに割り当てられる。XOR演算回路43a~43dのそれぞれは、データd4a~d4dに対してXOR演算処理(線形処理)を行う。
【0042】
具体的には、XOR演算回路43cは、データd4aとデータd4cとのXORを演算する。XOR演算回路43cは、演算結果をデータDoutのうちの32番目から47番目のビットまでのデータとして出力するとともに、演算結果をXOR演算回路43dに出力する。XOR演算回路43bは、データd4bとデータd4dとのXORを演算する。XOR演算回路43bは、演算結果をデータDoutのうちの16番目から31番目のビットまでのデータとして出力するとともに、演算結果をXOR演算回路43aに出力する。XOR演算回路43aは、データd4aとXOR演算回路43bの演算結果とのXORを演算する。XOR演算回路43aは、演算結果をデータDoutのうちのLSBから15番目のビットまでのデータとして出力する。XOR演算回路43dは、データd4dとXOR演算回路43cの演算結果とのXORを演算する。XOR演算回路43dは、演算結果をデータDoutのうちの48番目のビットからMSBまでのデータとして出力する。
【0043】
図3は、第1実施形態に係るデジタル処理装置の変形例を示す図である。
図3に示されるデジタル処理装置1Aは、処理部3での複数の変換回路31及び複数の変換回路32の割り当て方において
図1に示されるデジタル処理装置1と相違する。具体的には、デジタル処理装置1Aでは、データD1のうちのLSBから15番目のビットまでの4個のデータd1に対して、それぞれ変換回路31が割り当てられる。データD1のうち16番目から31番目のビットまでの4個のデータd1に対して、それぞれ変換回路32が割り当てられる。データD1のうちの32番目から47番目のビットまでの4個のデータd1に対して、それぞれ変換回路31が割り当てられる。データD1のうちの48番目のビットからMSBまでの4個のデータd1に対して、それぞれ変換回路32が割り当てられる。
【0044】
次に、デジタル処理装置1の製造方法を説明する。ここでは、プログラマブル論理デバイスとしてFPGAを用いる場合について説明する。デジタル処理装置1が備える回路部10は、FPGAを用いて作成される。デジタル処理装置1の製造では、まず、回路部10の回路機能をハードウェア記述言語で記述したプログラムが、回路設計者等のユーザによって作成される。そして、専用ツール等によって、プログラムに基づきFPGAに回路部10の回路機能が書き込まれることで、FPGA上に回路部10が作成される。なお、回路機能が書き込まれていないFPGAは、予め製作されている。デジタル処理装置1の製造方法は、記述工程と作成工程とを備える。
【0045】
記述工程は、FPGAに応じてデジタル処理装置1が備える回路部10の機能を記述する工程である。具体的には、暗号データ生成部2、処理部3及び線形処理部4のそれぞれの回路機能が、FPGAに応じたハードウェア記述言語によって記述される。回路機能を記述したプログラムは、FPGAに複数の変換回路31を作成するための第1部分と、FPGAに複数の変換回路32を作成するための第2部分とを備える。変換回路31及び変換回路32の回路機能は、真理値表等に基づき入力値に対して一意に出力値が定まるように記述される。
【0046】
複数の変換回路31の回路機能は、ルックアップテーブル記述方式によって記述される。つまり、プログラムの第1部分は、ルックアップテーブル記述方式を用いて記述される。具体的には、4ビットのデータd1の値(入力値)及びデータd2の値(出力値)が16進数で表され、全ての16進数の入力値0~F(2進数では0000~1111)に対して、それぞれに16進数の出力値0~Fを一意に対応付けるように、各変換回路31の回路機能が記述される。各変換回路31の回路機能は、例えば、入力値が2(2進数では0010)に対して出力値としてB(2進数では1011)を対応付け、入力値が3(2進数では0011)に対して出力値として1(2進数では0001)を対応付けるように記述される。なお、入力値及び出力値を10進数で表すことで、入力値及び出力値が一意に対応付けられてもよい。
【0047】
複数の変換回路32の回路機能は、ブール代数記述方式によって記述される。つまり、プログラムの第2部分は、ブール代数記述方式を用いて記述される。具体的には、データd2の各ビットを、データd1の複数のビットを含むブール代数(論理演算式)で表すように各変換回路32の回路機能が記述される。データd1を2進数表記で(x3,x2,x1,x0)とし、データd2を2進数表記で(y3,y2,y1,y0)とすると、データd2のy0は、例えば、下記式(1)のようにブール代数によって記述される。ここで、!はxn(nは0~3)の否定(NOT)を表し、&は論理積(AND)演算を表し、|は論理和(OR)演算を表す。同様にして、出力値の他のビットであるy1,y2,及びy3も、データd1の各ビット(x0,x1,x2,x3)から一意に定まるブール代数によって記述される。
y0=(!x3&!x2&x1)|(!x2&x1&x0)|(!x3&x2&!x1)|(x2&!x1&x0)|(x3&!x2&!x1&!x0)|(x3&x2&x1&!x0)…(1)
【0048】
変換回路31及び変換回路32の回路機能は、データd1の値が同じであれば、同じデータd2の値を出力するように記述される。複数の変換回路31及び複数の変換回路32の回路機能の記述が含まれるプログラムは、ソースファイルとも称される。回路機能が記述されたプログラムは、例えば、フレキシブルディスク、CD-ROM(Compact Disc-Read only memory)、DVD(Digital Versatile Disc)もしくはROM等の記憶媒体または半導体メモリに格納されて提供される。また、上述のプログラムは、搬送波に重畳されたコンピュータデータ信号としてネットワークを介して提供されてもよい。
【0049】
続いて、上述のプログラムに記述した回路機能に基づき、FPGAにおいて回路部10が作成される(作成工程)。作成工程では、例えば、専用ツールによって、上述のプログラムが、ハードウェア記述言語を中間言語に翻訳したネットリストに変換される。そして、ネットリストからFPGAに書き込むための書き込み用データ(オブジェクトファイル)が作成される。そして、書き込みツールによって、書き込み用データをFPGAに書き込むことで(コンフィギュレーション)、FPGAにおいて処理部3及び線形処理部4を含む回路部10が作成される。なお、デジタル処理装置1Aも、デジタル処理装置1と同様に製造される。
【0050】
次に、第1実施形態に係るデジタル処理装置1,1Aの効果の検証結果を説明する。表1及び表2は、FPGAとしてXilinx社のsp6(製品名)を用いた場合の検証結果である。第1検証例は、
図1に示されるデジタル処理装置1での検証結果である。第2検証例は、
図2に示されるデジタル処理装置1Aでの検証結果である。第1比較例は、処理部3が有する変換回路を全てルックアップテーブル記述方式に基づいて作成した場合の比較結果であり、第2比較例は、処理部3が有する変換回路を全てブール代数記述方式に基づいて作成した場合の比較結果である。第1検証例、第2検証例、第1比較例及び第2比較例におけるデジタル処理装置のそれぞれは、24個の回路部を備える。表1には、デジタル処理装置の入力データ及び出力データの各ビットを、FPGA上の特定の入出力端子に割り当てない場合(IO-Floated)での検証結果が示されている。また、表2には、デジタル処理装置の入力データ及び出力データの各ビットを、FPGA上の特定の入出力端子に割り当てた場合(IO-Stuck)での検証結果が示されている。回路合成の最適化オプションとして、IO-Floatedの場合には動作速度を最重視するオプションを、IO-Stuckの場合には動作速度を重視するが実装面積とのバランスも考慮するオプションを選択して、検証を行った。
【表1】
【表2】
【0051】
表1の評価項目に関し、「LUTs」は、第1検証例、第2検証例、第1比較例及び第2比較例の回路構成を実現するために、FPGAの論理ブロックを構成するルックアップテーブルの使用個数を示し、その単位は個である。「実装面積」は、FPGAに作成された回路の実装面積、ここでは、FPGAの所定数のルックアップテーブル及びフリップフロップで構成されるスライスの使用個数を示し、その単位はスライス数である。「動作速度」は、デジタル処理装置が動作可能な最大の周波数であり、その単位はメガヘルツ(MHz)である。「消費電力」は、動作速度10MHzでのFPGA上に作成された回路で消費される電力を示し、その単位はミリワット(mW)である。
【0052】
表1及び表2に示されるように、第1検証例、第2検証例、第1比較例、及び第2比較例において、FPGA上で使用されたルックアップテーブルの個数は同じであった。IO-Floatedの場合、第1検証例の検証結果では、実装面積が第1比較例及び第2比較例と比べて小さくなり、第2検証例の検証結果では、動作速度が第1比較例及び第2比較例と比べて速くなった。一方、IO-Stuckの場合、第1検証例の検証結果では、実装面積が第1比較例及び第2比較例と比べ小さくなり、さらに動作速度が第1比較例及び第2比較例と比べて速くなった。また、第2検証例の検証結果では、実装面積が第1比較例及び第2比較例と比べて小さくなり、さらに動作速度が第1比較例及び第2比較例と比べて速くなった。
【0053】
IO-Floatedの場合、第1検証例及び第2検証例の検証結果では、第1比較例及び第2比較例のうちの消費電力が大きい比較例と比べて、消費電力が小さくなった。一方、IO-Stuckの場合、第1検証例の検証結果では、第1比較例及び第2比較例のうちの消費電力が大きい比較例と比べて、消費電力が小さくなった。第2検証例の検証結果では、第1比較例及び第2比較例と比べて、消費電力が小さくなった。以上のことから、第1検証例及び第2検証例では、第1比較例及び第2比較例と比べて、消費電力の大幅な増加をもたらすことなく、性能が向上したことがわかる。
【0054】
このようなデジタル処理装置1,1Aでは、シャッフル回路41a~41d(単位処理回路)のそれぞれ及びシフト回路42a~42d(単位処理回路)のそれぞれは、第2ビット数(4ビット)の4倍である第3ビット数(16ビット)を有する単位データを処理単位として線形処理を行う。また処理部3では、処理単位ごとに4個の変換回路31又は4個の変換回路32が割り当てられる。処理部3では、異なる記述方式に基づいて作成された変換回路31,32が混在するとともに、処理単位ごとに同じ記述方式に基づいて作成された4個の変換回路31,32が割り当てられる。FPGA(プログラマブル論理デバイス)に作成される種々の回路は、ランダムに分散して配置されることを基本とするが、同じ記述方式に基づいた回路はまとまって配置される傾向がある。このため、処理単位ごとに同じ記述方式に基づいて作成された4個の変換回路31,32を割り当てることで、4個の変換回路31,32がまとまって配置される可能性が高まる。その結果、FPGAに作成される回路の実装面積を小さくでき、又はその回路の処理速度を速めることができるので、デジタル処理装置の性能を向上させることが可能となる。
【0055】
シャッフル回路41a~41d(単位処理回路)は、単位データに含まれる4個のデータd2(第2部分データ)の並び順を変更する。シャッフル回路41aが処理する4個のデータd2を供給する4個の変換回路32が、分散して配置されている場合、4個の変換回路32からシャッフル回路41aまでの配線の配線長の合計が大きくなる可能性がある。これに対して、シャッフル回路41aが処理する4個のデータd2を供給する4個の変換回路32は、まとまって配置される傾向があるので、上記配線長の合計が小さくなる可能性が高まる。これにより、FPGAに作成される回路の実装面積が低減され、処理速度が速くなる可能性が高まる。シャッフル回路41b~41dについても同様である。
【0056】
シフト回路42a~42d(単位処理回路)は、データd3a~d3d(単位データ)を所定ビット数シフトする。シフト回路42aが処理するデータd3aをシャッフル回路41aを介して供給する4個の変換回路32が、分散して配置されている場合、4個の変換回路32からシャッフル回路41aを介してシフト回路42aまでの配線の配線長の合計が大きくなる可能性がある。これに対して、上記4個の変換回路32は、まとまって配置される傾向があるので、上記配線長の合計が小さくなる可能性が高まる。これにより、FPGAに作成される回路の実装面積が低減され、処理速度が速くなる可能性が高まる。シフト回路42b~42dについても同様である。
【0057】
複数の変換回路31(第1変換回路)のそれぞれ及び複数の変換回路32(第2変換回路)のそれぞれは、非線形変換処理を行う。そのため、デジタル処理装置1,1Aの出力データから、デジタル処理装置1,1Aの入力データを推測され難くすることが可能となる。
【0058】
図4は、第2実施形態に係るデジタル処理装置の構成を示す図である。
図5は、
図4の配列処理回路の配列変換処理を説明するための図である。
図4に示されるデジタル処理装置5は、PRINTcipher規格に準拠した暗号処理を行うための装置である。デジタル処理装置5は、第1実施形態に係るデジタル処理装置1と比較して、入力データ及び出力データの第1ビット数が48ビットである点、並びに処理部3及び線形処理部4に代えて、処理部7及び線形処理部6を備える点において、主に相違する。
【0059】
デジタル処理装置5では、暗号データ生成部2は、データDinと暗号鍵データとのXORを演算し、演算結果をデータD1として線形処理部6に出力する。データDin及びD1は第1ビット数を有する。なお、本実施形態では、データDinにおけるMSBのビット番号は47番である。データD1、及び後述のデータD5,D6,D7,Doutについても同様である。線形処理部6は、データD1を線形処理し、線形処理結果をデータD7(第1データ)として処理部7に出力する。データD7は第1ビット数を有するデータである。線形処理部6は、配列変換回路61、XOR実行回路62、及び置換回路63を有する。
【0060】
配列変換回路61は、データD1に対して配列変換処理(線形処理)を施す回路である。配列変換処理とは、データD1に含まれる複数のビットの配列を変更する処理である。配列変換回路61は、データD1の配列変換処理を行うことでデータD5を生成する。配列変換回路61は、データD5をXOR実行回路62に出力する。データD5は第1ビット数を有するデータである。
【0061】
図5に示されるように、配列変換回路61は、データD1におけるビット番号mが0番目から15番目までの各ビットを、データD5において(3×m)番目のビット位置に配置する。配列変換回路61は、データD1におけるビット番号mが16番目から31番目の各ビットを、データD5において{3×(m-16)+1}番目のビット位置に配置する。配列変換回路61は、データD1におけるビット番号mが32番目から47番目までの各ビットを、データD5において{3×(m-32)+2}番目のビット位置に配置する。
【0062】
XOR実行回路62は、データD5に対してXOR演算処理を施す回路である。XOR実行回路62は、データD5のXOR演算処理を行うことでデータD6を生成する。XOR実行回路62は、データD6を置換回路63に出力する。データD6は、第1ビット数を有するデータである。XOR実行回路62は、XOR演算回路62aを有する。XOR演算回路62aは、データD5のうちのLSBから5番目のビットまでのデータd51に割り当てられる。XOR演算回路62aは、データd51に対してXOR演算処理(線形処理)を行う。XOR演算回路62aは、演算結果をデータd61として置換回路63に出力する。XOR実行回路62は、データD5のうちの6番目のビットからMSBまでのデータd52を、値を変更することなくデータd62として置換回路63に出力する。
【0063】
なお、データd51はデータD5の一部のデータであり、第3ビット数(ここでは、6ビット)を有する。データd52はデータD5の一部のデータである。データd51及びデータd52によって、データD5が構成される。データd61はデータD6の一部のデータであり、第3ビット数を有する。データd62はデータD6の一部のデータである。データd61及びデータd62によって、データD6が構成される。データd52及びデータd62は、同じビット数(ここでは、42ビット)を有する。
【0064】
XOR演算回路62a(単位処理回路)は、データd51とラウンド定数データとのXORを演算する。XOR演算回路62aは、第2ビット数のN倍(Nは2以上の整数)である第3ビット数を有するデータd51を単位データとしてXOR演算処理(線形処理)を行う。なお本実施形態では、N=2である。ラウンド定数データは、予め不図示のメモリに記憶されており、メモリからXOR演算回路62aに入力される。ラウンド定数データは、不図示のラウンド定数生成回路によって逐次生成され、ラウンド定数生成回路からXOR演算回路62aに入力されてもよい。ラウンド定数データは、第3ビット数を有する。ラウンド定数データは、デジタル処理装置5が備える複数の回路部10のそれぞれで異なる値を有していてもよい。
【0065】
置換回路63は、データD6に対して、置換処理を施す回路である。置換処理とは、データD6のうちの第2ビット数(ここでは、3ビット)を有するデータに含まれる各ビットのビット位置を、相互に入れ替える処理である。置換回路63は、データD6の置換処理を行うことでデータD7を生成する。置換回路63は、データD7を処理部7に出力する。データD7は、第1ビット数を有するデータである。置換回路63は、複数(ここでは、16個)の個別置換回路64を有する。複数の個別置換回路64は、並列に配置され、複数の個別置換回路64のそれぞれは、データD6における第2ビット数を有するデータごとに、LSBから順に割り当てられる。個別置換回路64は、データD6のうちの第2ビット数を有するデータに対して、置換処理(線形処理)を施す。
【0066】
具体的には、個別置換回路64は、2ビットのラウンド鍵に応じて、個別置換回路64に入力されるデータの各ビットのビット位置を相互に入れ替える。ラウンド鍵は、予め不図示のメモリに記憶されており、メモリから各個別置換回路64に入力される。ラウンド鍵は、不図示のラウンド鍵生成回路によって逐次生成され、ラウンド鍵生成回路から各個別置換回路64に入力されてもよい。ラウンド鍵は、デジタル処理装置5が備える複数の回路部10のそれぞれで異なる値を有していてもよい。個別置換回路64は、ラウンド鍵の値に応じて、各ビットのビット位置の入れ替え方を異ならせる。例えば、2ビットのラウンド鍵の値が(0,1)の場合、個別置換回路64は、個別置換回路64に入力される3ビットのデータ(p2,p1,p0)を、各ビットのビット位置を入れ替えたデータ(p1,p2,p0)に置換する。ラウンド鍵の値が(1,0)の場合、個別置換回路64は、データ(p2,p1,p0)をデータ(p2,p0,p1)に置換する。
【0067】
各個別置換回路64は置換処理を行うことでデータd7(第1部分データ)を生成する。各個別置換回路64は、データd7を変換回路31又は変換回路32に出力する。なお、データd7は、データD7のうちの一部のデータであり、第2ビット数を有する。複数のデータd7は、データD7のLSBからMSBまでの全てのデータを、ビット番号順に第2ビット数単位で分割したデータである。
図4では、16個のデータd7によって、データD7が構成される。
【0068】
処理部7は、データD7をデータDout(第2データ)に変換する回路である。データDoutは第1ビット数を有するデータである。具体的には、処理部7は、データD7の非線形変換処理を行うことでデータDoutを生成する。処理部7は、データDoutを回路部10からの出力データとして出力する。処理部7では、複数の変換回路31(複数の第1変換回路)及び複数の変換回路32(複数の第2変換回路)が並列に配置される。各変換回路31及び各変換回路32には、データd7が入力される。複数の変換回路31のそれぞれ及び複数の変換回路32のそれぞれが、それぞれに入力されるデータd7を変換処理することで、処理部7はデータD7をデータDoutに変換する。
【0069】
各変換回路31及び各変換回路32は、データd7の変換処理を行うことで、データdout(第2部分データ)を生成する。データdoutは第2ビット数を有する。なお、データdoutは、データDoutのうちの一部のデータである。複数のデータdoutは、データDoutのLSBからMSBまでの全てのデータを、ビット番号順に第2ビット数単位で分割したデータである。
図4では、16個のデータdoutによって、データDoutが構成される。
【0070】
処理部7では、データD7における第2ビット数のN倍(ここでは、N=2)の第3ビット数のデータごとに複数の変換回路31のうちのN個(ここでは、N=2)の変換回路31又は複数の変換回路32のうちのN個(ここでは、N=2)の変換回路32が割り当てられる。具体的には、処理部7では、データD7のうちのLSBから5番目のビットまでの2個のデータd7に対して、それぞれ変換回路31が割り当てられる。データD7のうちの6番目から11番目のビットまでの2個のデータd7に対して、それぞれ変換回路31が割り当てられる。データD7のうちの12番目から17番目のビットまでの2個のデータd7に対して、それぞれ変換回路31が割り当てられる。データD7のうちの18番目から23番目のビットまでの2個のデータd7に対して、それぞれ変換回路31が割り当てられる。
【0071】
処理部7では、データD7のうちの24番目から29番目のビットまでの2個のデータd7に対して、それぞれ変換回路32が割り当てられる。データD7のうちの30番目のビットから35番目のビットまでの2個のデータd7に対して、それぞれ変換回路32が割り当てられる。データD7のうちの36番目から41番目のビットまでの2個のデータd7に対して、それぞれ変換回路32が割り当てられる。データD7のうちの42番目のビットからMSBまでの2個のデータd7に対して、それぞれ変換回路32が割り当てられる。
【0072】
図6は、第2実施形態に係るデジタル処理装置の変形例を示す図である。
図6で示されるデジタル処理装置5Aは、処理部7での複数の変換回路31及び複数の変換回路32の割り当て方において
図4に示されるデジタル処理装置5と相違する。具体的には、デジタル処理装置5Aでは、データD7のうちのLSBから5番目のビットまでの2個のデータd7に対して、それぞれ変換回路31が割り当てられる。データD7のうちの6番目から11番目のビットまでの2個のデータd7に対して、それぞれ変換回路32が割り当てられる。データD7のうちの12番目から17番目のビットまでの2個のデータd7に対して、それぞれ変換回路31が割り当てられる。データD7のうちの18番目から23番目のビットまでの2個のデータd7に対して、それぞれ変換回路32が割り当てられる。
【0073】
デジタル処理装置5Aでは、データD7のうちの24番目から29番目のビットまでの2個のデータd7に対して、それぞれ変換回路31が割り当てられる。データD7のうちの30番目から35番目のビットまでの2個のデータd7に対して、それぞれ変換回路32が割り当てられる。データD7のうちの36番目から41番目のビットまでの2個のデータd7に対して、それぞれ変換回路31が割り当てられる。データD7のうちの42番目のビットからMSBまでの2個のデータd7に対して、それぞれ変換回路32が割り当てられる。
【0074】
第2実施形態に係るデジタル処理装置5,5Aは、第1実施形態に係るデジタル処理装置1,1Aと同様に、FPGAを用いて製造される。デジタル処理装置5,5Aの製造では、第1実施形態に係るデジタル処理装置1,1Aの製造と同様に、線形処理部6及び処理部7を含む回路部10の回路機能をハードウェア記述言語で記述したプログラムが作成される。
【0075】
次に、第2実施形態に係るデジタル処理装置5,5Aの効果の検証結果を説明する。表3及び表4は、FPGAとしてXilinx社のsp6(製品名)を用いた場合の検証結果である。第3検証例は、
図4に示されるデジタル処理装置5での検証結果である。第4検証例は、
図6に示されるデジタル処理装置5Aでの検証結果である。第3比較例は、処理部7が備える変換回路を全てルックアップテーブル記述方式に基づいて作成した場合の比較結果であり、第4比較例は、処理部7が備える変換回路を全てブール代数記述方式に基づいて作成した場合の比較結果である。第3検証例、第4検証例、第3比較例及び第4比較例におけるデジタル処理装置のそれぞれは、48個の回路部を備える。表3にはIO-Floatedの場合での検証結果が示され、表4にはIO-Stuckの場合での検証結果が示されている。回路合成の最適化オプションとしてIO-Floated及びIO-Stuckのいずれの場合も動作速度を重視するが実装面積とのバランスも考慮するオプションを選択して、検証を行った。
【表3】
【表4】
【0076】
表3及び表4に示されるように、第3検証例、第4検証例、第3比較例、及び第4比較例において、FPGA上で使用されたルックアップテーブルの個数は同じであった。IO-Floatedの場合、第3検証例の検証結果では、実装面積が第3比較例及び第4比較例と比べて小さくなり、さらに動作速度が第3比較例及び第4比較例と比べて速くなった。第4検証例の検証結果では、実装面積が第3比較例及び第4比較例と比べて小さくなり、さらに動作速度が第3比較例及び第4比較例と比べて速くなった。一方、IO-Stuckの場合、第3検証例の検証結果では、実装面積が第3比較例及び第4比較例と比べ小さくなり、さらに動作速度が第3比較例及び第4比較例と比べて速くなった。また、第4検証例の検証結果では、動作速度が第3比較例及び第4比較例と比べて速くなった。
【0077】
IO-Floatedの場合、第3検証例の検証結果では、第3比較例及び第4比較例のうちの消費電力が大きい比較例と比べて、消費電力が小さくなった。第4検証例の検証結果では、第3比較例及び第4比較例と比べて、消費電力が小さくなった。一方、IO-Stuckの場合、第3検証例及び第4検証例の検証結果では、第3比較例及び第4比較例と比べて、消費電力が小さくなった。以上のことから、第3検証例及び第4検証例では、第3比較例及び第4比較例と比べて、消費電力の大幅な増加をもたらすことなく、性能が向上したことがわかる。
【0078】
このようなデジタル処理装置5,5Aでは、XOR演算回路62a(単位処理回路)は、第2ビット数(3ビット)の2倍である第3ビット数(6ビット)を有する単位データを処理単位として線形処理を行う。また、処理部7では、XOR演算回路62a(単位処理回路)における処理単位ごとに2個の変換回路31(第1変換回路)又は2個の変換回路32(第2変換回路)が割り当てられる。処理部7では、異なる記述方式に基づいて作成された変換回路31,32が混在するとともに、処理単位ごとに同じ記述方式に基づいて作成された2個の変換回路31,32が割り当てられる。FPGA(プログラマブル論理デバイス)に作成される種々の回路は、ランダムに分散して配置されることを基本とするが、同じ記述方式に基づいた回路はまとまって配置される傾向がある。このため、処理単位ごとに同じ記述方式に基づいて作成された2個の変換回路31,32を割り当てることで、2個の変換回路31,32がまとまって配置される可能性が高まる。その結果、FPGAに作成される回路の実装面積を小さくでき、又はその回路の処理速度を速めることができるので、デジタル処理装置の性能を向上させることが可能となる。
【0079】
XOR演算回路62a(単位処理回路)は、単位データと、第3ビット数を有するデータ(ラウンド鍵)とのXORを演算する。XOR演算回路62aの処理結果に基づくデータが、処理単位ごとに割り当てられた2個の変換回路31に入力される。これらの2個の変換回路31が、分散して配置されている場合、XOR演算回路62aから置換回路63を介して2個の変換回路31までの配線の配線長の合計が大きくなる可能性がある。これに対して、上記2個の変換回路31は、まとまって配置される傾向があるので、上記配線長の合計が小さくなる可能性が高まる。これにより、FPGAに作成される回路の実装面積が低減され、処理速度が速くなる可能性が高まる。
【0080】
なお、本発明に係るデジタル処理装置、デジタル処理装置の製造方法及びプログラムは上記実施形態に限定されない。
【0081】
上記第1実施形態及び第2実施形態では、処理部3,7では、合計で同じ個数の変換回路31及び変換回路32が割り当てられているが、これに限られない。処理部3,7に複数の変換回路31及び複数の変換回路32が含まれていれば、変換回路31の個数と変換回路32の個数とは同じでなくてもよい。
【0082】
処理部3,7は非線形変換処理を行っているが、これに限られない。処理部3はデータD1の線形変換処理を行ってもよく、処理部7はデータD7の線形変換処理を行ってもよい。
【0083】
シャッフル回路41a~41d等の単位処理回路は、第2ビット数のN倍(Nは2以上の整数)である第3ビット数を有する単位データを処理単位として線形処理を行っていればよく、処理部3,7では、処理単位ごとにN個の変換回路31又はN個の変換回路32が割り当てられていればよい。
【0084】
デジタル処理装置1,1A,5,5Aは、暗号処理を行うための装置であるが、これに限られない。デジタル処理装置1,1A,5,5Aは、フィルタ係数をテーブル参照回路によって読み取る信号処理装置であってもよい。その他、デジタル処理装置1,1A,5,5Aは、入力データの値を、入力データの値と異なる値を有する出力データに変換するテーブル参照処理を行う回路を備える装置であればよい。
【符号の説明】
【0085】
1,5…デジタル処理装置、3,7…処理部、4,6…線形処理部、31…変換回路、32…変換回路。