(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-22
(45)【発行日】2024-05-01
(54)【発明の名称】設計装置、演算回路、設計方法及び設計プログラム
(51)【国際特許分類】
G06F 30/32 20200101AFI20240423BHJP
G06F 119/12 20200101ALN20240423BHJP
【FI】
G06F30/32
G06F119:12
(21)【出願番号】P 2021142126
(22)【出願日】2021-09-01
【審査請求日】2023-07-20
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100106002
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100120891
【氏名又は名称】林 一好
(72)【発明者】
【氏名】福島 和英
(72)【発明者】
【氏名】清本 晋作
【審査官】堀井 啓明
(56)【参考文献】
【文献】特開平07-334531(JP,A)
【文献】特開平09-102547(JP,A)
【文献】特開2000-194738(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 30/00-30/398
G06F 119/12
(57)【特許請求の範囲】
【請求項1】
順次実行される複数の処理のうち、遅延が最大
である一つの処理をクリティカルパスとして選択するクリティカルパス選択部と、
連続する処理
と処理との
間のいずれ
かにレジスタを挿入し、レジスタ間の
一つ以上の処理
による合計の遅延を前記クリティカルパス
の遅延以下に調整するレジスタ挿入部と、を備え、
前記レジスタ挿入部は、
全てのレジスタ間
において前記合計の遅延
が前記クリティカルパス
の遅延以下となる条件を満たす最小数のレジスタを挿入する演算回路の設計装置。
【請求項2】
前記クリティカルパス選択部は、並列可能な処理手順が複数存在する場合、当該複数の処理手順に含まれる全ての処理のうち、遅延が最大
である一つの処理を前記クリティカルパスとして選択し、
前記レジスタ挿入部は、前記複数の処理手順それぞれについて、レジスタ間の
一つ以上の処理
による合計の遅延を前記クリティカルパス
の遅延以下に調整する請求項1に記載の設計装置。
【請求項3】
前記レジスタ挿入部は、前記複数の処理のうち、実行順の先頭から遅延の合計が
前記クリティカルパスの遅延を超えない最大数を選択し、直後にレジスタを挿入することを繰り返す請求項1又は請求項2に記載の設計装置。
【請求項4】
連続する処理と処理の間のいずれ
かにレジスタを備え、
前記レジスタは、
順次実行される複数の処理のうち、遅延が最大
である一つの処理をクリティカルパスとし
、レジスタ間の
一つ以上の処理
による合計の遅延が全て前記クリティカルパス
の遅延以下となる条件を満たす最小数だけ設けられた演算回路。
【請求項5】
順次実行される複数の処理のうち、遅延が最大
である一つの処理をクリティカルパスとして選択するクリティカルパス選択ステップと、
連続する処理
と処理との
間のいずれ
かにレジスタを挿入し、レジスタ間の
一つ以上の処理
による合計の遅延を前記クリティカルパス
の遅延以下に調整するレジスタ挿入ステップと、をコンピュータが実行し、
前記レジスタ挿入ステップにおいて、
全てのレジスタ間
において前記合計の遅延
が前記クリティカルパス
の遅延以下となる条件を満たす最小数のレジスタを挿入する演算回路の設計方法。
【請求項6】
請求項1から請求項3のいずれかに記載の設計装置としてコンピュータを機能させるための設計プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号処理の高速実行のためのハードウェア実装方法に関する。
【背景技術】
【0002】
従来、所定の処理手順を実行するための演算回路に実装された各演算は、入力及び出力にレジスタが設けられ、入力側のレジスタから受け取ったデータによる演算結果が出力側のレジスタに格納される。このようなレジスタ間で実行される演算(パス)に対して、演算回路のクロック周期が短いと、演算結果がレジスタに格納されることなく破棄されてしまう。
したがって、処理性能を向上させるために動作周波数を高くする場合、クリティカルパスの遅延(演算時間)を抑制する必要があった。
【0003】
そこで、例えば、特許文献1では、ハードウェア量を抑制してクリティカルパスの遅延を抑制する加減算器が提案されている。また、特許文献2では、2進数の複数のビットを順次X進数に変換していく処理において、クリティカルパスの遅延が小さい演算回路が提案されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2016-224596号公報
【文献】特開2012-209755号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術は、加減算又は基数変換といった特定の処理におけるクリティカルパスの遅延を低減することを目的とし、例えば任意の暗号処理の性能向上に利用することはできなかった。
【0006】
本発明は、任意の処理のハードウェア実装においてスループットを向上できる設計装置、演算回路、設計方法及び設計プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明に係る演算回路の設計装置は、順次実行される複数の処理のうち、遅延が最大の処理をクリティカルパスとして選択するクリティカルパス選択部と、前記複数の処理のいずれかの間にレジスタを挿入し、レジスタ間の処理の遅延を前記クリティカルパス以下に調整するレジスタ挿入部と、を備え、前記レジスタ挿入部は、レジスタ間の処理の遅延が全て前記クリティカルパス以下となる条件を満たす最小数のレジスタを挿入する。
【0008】
前記クリティカルパス選択部は、並列可能な処理手順が複数存在する場合、当該複数の処理手順に含まれる全ての処理のうち、遅延が最大の処理を前記クリティカルパスとして選択し、前記レジスタ挿入部は、前記複数の処理手順それぞれについて、レジスタ間の処理の遅延を前記クリティカルパス以下に調整してもよい。
【0009】
前記レジスタ挿入部は、前記複数の処理のうち、実行順の先頭から遅延の合計がTを超えない最大数を選択し、直後にレジスタを挿入することを繰り返してもよい。
【0010】
本発明に係る演算回路は、順次実行される複数の処理のいずれかの間にレジスタを備え、前記レジスタは、遅延が最大の処理をクリティカルパスとし、前記レジスタ間の処理の遅延が全て前記クリティカルパス以下となる条件を満たす最小数だけ設けられる。
【0011】
本発明に係る演算回路の設計方法は、順次実行される複数の処理のうち、遅延が最大の処理をクリティカルパスとして選択するクリティカルパス選択ステップと、前記複数の処理のいずれかの間にレジスタを挿入し、レジスタ間の処理の遅延を前記クリティカルパス以下に調整するレジスタ挿入ステップと、をコンピュータが実行し、前記レジスタ挿入ステップにおいて、レジスタ間の処理の遅延が全て前記クリティカルパス以下となる条件を満たす最小数のレジスタを挿入する。
【0012】
本発明に係る演算回路の設計プログラムは、前記設計装置としてコンピュータを機能させるためのものである。
【発明の効果】
【0013】
本発明によれば、任意の処理のハードウェア実装においてスループットを向上できる。
【図面の簡単な説明】
【0014】
【
図1】実施形態における設計装置の機能構成を示す図である。
【
図2】実施形態における、暗号処理のハードウェア実装の設計手順を例示するフローチャートである。
【発明を実施するための形態】
【0015】
以下、本発明の実施形態の一例について説明する。
本実施形態の演算回路は、暗号処理等の任意の処理の性能向上を対象とし、スループットを向上させたハードウェア実装が実現されたものである。
【0016】
暗号処理をハードウェア実装する際に、スループットを向上させる方法としては、処理の途中にレジスタを挿入する方法がある。レジスタの挿入により、クリティカルパスが解消するため、動作周波数を高めることで、スループットが向上する。
一方で、レジスタを過剰に挿入すると、処理が完了するまでのクロック数が増加するため、スループットの低下につながる。そこで、本実施形態では、暗号処理のハードウェア実装に際し、クリティカルパスの遅延時間に基づきレジスタの挿入位置を決定し、スループットを最適化する手法を示す。
【0017】
図1は、本実施形態における設計装置1の機能構成を示す図である。
設計装置1は、制御部10及び記憶部20の他、各種の入出力インタフェース等を備えた情報処理装置(コンピュータ)である。
【0018】
制御部10は、設計装置1の全体を制御する部分であり、記憶部20に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各機能を実現する。制御部10は、CPUであってよい。
【0019】
記憶部20は、ハードウェア群を設計装置1として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスクドライブ(HDD)等であってよい。
具体的には、記憶部20は、本実施形態の各機能を制御部10に実行させるためのプログラム(設計プログラム)等を記憶する。
【0020】
制御部10は、クリティカルパス選択部11と、レジスタ挿入部12とを備え、これらの機能部により、演算回路の適切な箇所にレジスタを適切な数だけ挿入し、スループットを最適化する。
【0021】
クリティカルパス選択部11は、順次実行される複数の処理のうち、遅延が最大の処理をクリティカルパスとして選択する。
このとき、クリティカルパス選択部11は、並列可能な処理手順が複数存在する場合に、これら複数の処理手順に含まれる全ての処理のうち、遅延が最大の処理をクリティカルパスとして選択する。
【0022】
レジスタ挿入部12は、順次実行される複数の処理のいずれかの間にレジスタを挿入し、レジスタ間の処理による遅延をクリティカルパス以下に調整する。
このとき、レジスタ挿入部12は、1つ又は複数存在する処理手順のそれぞれについて、レジスタ間の処理の遅延が全てクリティカルパス以下となる条件を満たす最小数のレジスタを挿入する。
【0023】
図2は、本実施形態における、暗号処理のハードウェア実装の設計手順を例示するフローチャートである。
暗号処理のハードウェア実装において、異なる回路により並列して実行できる処理をA,Bとする。なお、並列可能な処理が3つ以上存在する場合も同様であるため、ここでは、一般性を失わずに、並列化可能な処理は2つとして説明する。
【0024】
また、処理Aを順次実行される処理に分割したものを、a1,a2,…,amとする。例えば、AをAES(Advanced Encryption Standard)のラウンド関数とした場合、SubBytes,ShiftRows,MixColumns,AddRoundKeyの処理を、それぞれa1,a2,a3,a4とすることができる。あるいは、それぞれの処理をさらに細分化することも可能である。
処理Bについても同様に、順次実行されるb1,b2,…,bnに分割される。
【0025】
ここで、設計装置1は、次のアルゴリズムに従い、レジスタの挿入位置を決定する。
なお、t(ai)は、処理aiにおける遅延(aiの処理時間)を意味する。
【0026】
ステップS1において、クリティカルパス選択部11は、処理a1,a2,…,am及び処理b1,b2,…,bnの中から、最も遅延の大きいものを選択する。処理amaxが選ばれたこととすると、T=t(amax)が暗号処理のハードウェア実装におけるクリティカルパスとなる。
【0027】
ステップS2において、レジスタ挿入部12は、t(a1)+t(a2)+…+t(am)がT以下か否かを判定する。この判定がYESの場合、処理Aに対するレジスタ挿入を完了して処理はステップS5に移る。一方、判定がNOの場合、処理はステップS3に移る。
【0028】
ステップS3において、レジスタ挿入部12は、t(a1)+t(a2)+…+t(ai)≦T、かつ、t(a1)+t(a2)+…+t(ai+1)>T、となるiを探索し、処理aiと処理ai+1との間にレジスタを挿入して、レジスタ間の処理a1~aiの遅延をクリティカルパスT以下とする。
【0029】
ステップS4において、レジスタ挿入部12は、ステップS3でレジスタを挿入した以降の処理ai+1~amをa1~amと読み替え、処理はステップS2に移る。
【0030】
ステップS5において、レジスタ挿入部12は、処理Bに対しても、処理Aと同様に、ステップS2~S4と同様の手順を実行し、処理Bに対するレジスタ挿入を完了する。
ここで、並列処理が3つ以上の場合、ステップS2~S4の手順が繰り返し実行される。
【0031】
なお、このアルゴリズムは一例であり、レジスタ間の処理による遅延が全てクリティカルパス以下となる条件を満たす、最小数のレジスタを挿入するための手順であればよい。
【0032】
本実施形態によれば、設計装置1は、順次実行される複数の処理のうち、遅延が最大の処理をクリティカルパスとして選択し、これら複数の処理のいずれかの間にレジスタを挿入することで、レジスタ間の処理の遅延をクリティカルパス以下に調整する。このとき、設計装置1は、レジスタ間の処理の遅延が全てクリティカルパス以下となる条件を満たす最小数のレジスタを挿入する。
したがって、設計装置1は、クリティカルパスを解消し、かつ、レジスタ数の増加によるクロック数の増加を抑制できるので、演算回路の動作周波数を上げることでスループットを向上できる。
【0033】
これにより、本実施形態は、例えば、ストリーム暗号やFeistel型の共通鍵暗号など、様々な暗号処理のハードウェア実装に適用できる。特に、Beyond5G/6Gへの適用を目的としたストリーム暗号においては、ソフトウェア実装におけるスループットを向上するため、AESのラウンド関数とARX構造(AND,OR,XOR)とを組み合わせた状態更新関数が採用されている。状態更新関数の経路それぞれにおいて、複数の演算が順次実行される場合、最小限のレジスタの挿入により、ハードウェア実装のスループットも向上する。
なお、本実施形態の適用対象は暗号処理には限られない。
【0034】
また、設計装置1は、並列可能な処理手順が複数存在する場合、これら複数の処理手順に含まれる全ての処理のうち、遅延が最大の処理をクリティカルパスとして選択し、複数の処理手順それぞれについて、レジスタ間の処理の遅延をクリティカルパス以下に調整する。
したがって、設計装置1は、並列処理可能な複数の処理手順全てについて、遅延を最小限に抑え、スループットを向上できる。
【0035】
なお、前述の実施形態により、例えば、暗号処理のハードウェア実装においてスループットを向上できることから、国連が主導する持続可能な開発目標(SDGs)の目標9「レジリエントなインフラを整備し、持続可能な産業化を推進するとともに、イノベーションの拡大を図る」に貢献することが可能となる。
【0036】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、前述した実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【0037】
設計装置1による設計方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD-ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【0038】
1 設計装置
10 制御部
11 クリティカルパス選択部
12 レジスタ挿入部
20 記憶部