JP5273152B2 - 半導体装置、情報処理装置及び半導体装置の構築方法 - Google Patents
半導体装置、情報処理装置及び半導体装置の構築方法 Download PDFInfo
- Publication number
- JP5273152B2 JP5273152B2 JP2010531686A JP2010531686A JP5273152B2 JP 5273152 B2 JP5273152 B2 JP 5273152B2 JP 2010531686 A JP2010531686 A JP 2010531686A JP 2010531686 A JP2010531686 A JP 2010531686A JP 5273152 B2 JP5273152 B2 JP 5273152B2
- Authority
- JP
- Japan
- Prior art keywords
- circuit
- unit
- construction
- information
- logic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000010276 construction Methods 0.000 title claims description 237
- 230000010365 information processing Effects 0.000 title claims description 33
- 239000004065 semiconductor Substances 0.000 title claims description 30
- 238000000034 method Methods 0.000 claims description 18
- 238000013478 data encryption standard Methods 0.000 description 40
- 238000010586 diagram Methods 0.000 description 38
- 239000000872 buffer Substances 0.000 description 15
- 230000002093 peripheral effect Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 230000007257 malfunction Effects 0.000 description 3
- 230000008707 rearrangement Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17748—Structural details of configuration resources
- H03K19/17772—Structural details of configuration resources for powering on or off
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17748—Structural details of configuration resources
- H03K19/17768—Structural details of configuration resources for security
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Logic Circuits (AREA)
Description
本件は、半導体装置、情報処理装置及び半導体装置の構築方法に関する。
コンピュータシステムにおける情報処理装置によって種々の情報処理を行わせることが広く行われている。例えば、サーバの機能を担う情報処理装置は、このサーバにネットワークを介して接続されるクライアントと通信し、要求に応じた情報や情報処理のサービスを提供する。また、情報処理において、特定の処理をソフトウェアにより実行するプロセッサの負荷を抑えたりするため、ハードウェア回路で処理を実行することが行われている。例えば、暗号化処理を必要とする特定のアプリケーションをサーバで実行する場合において、暗号化の処理を、専用回路を有する半導体装置が搭載された専用のハードウェア回路に分担させることによって処理の高速化が図られている。
ハードウェア回路による高速な処理を実現しつつ、処理内容の変更を容易にする半導体装置として、フィールドプログラマブルゲートアレイ(FPGA:Field Programmable Gate Array)が知られている。FPGAは、例えば外部のROM(Read Only Memory)等から取り込んだ回路データによって内部回路を構築(コンフィグレーション)する。又、例えば、暗号処理の方式には、DES(Data Encryption Standard)に代表される共通鍵暗号方式や、RSAに代表される公開鍵暗号方式がある。例えば、サーバには、日中は複数のクライアントと通信してトランザクション処理を実行し、夜間は特定の装置と通信してバッチ処理を実行するものがある。例えば、このようなサーバは、トランザクション処理においてはクライアントの認証に関わるRSA暗号処理や改ざん検知のためのハッシュ関数処理を実行し、バッチ処理においては専らDESで暗号化された情報を処理する。このようなサーバでは、例えば、暗号処理を担うFPGA向けに、DESの処理回路に対応した回路データとRSAの処理回路に対応した回路データを用意しておき、業務の区切りにおいてFPGA内部の回路を再構築して処理内容を更新する。これによって、FPGA内を有効活用しながら複数種類の処理に対応することが可能となる。FPGAにおける回路の再構築は、暗号の鍵方式を変更する場合だけでなく、暗号処理のアルゴリズムを更新する場合にも有効である。例えば、共通鍵暗号方式に限っても、これまで米国の標準暗号規格として制定されていたDESのアルゴリズムが、技術進歩による安全性低下のため、AES(advanced encryption standard)に代替されるというように、アルゴリズムは更新されていく場合がある。また、回路の再構築は、FPGA内部で構築されていた回路の不具合を改善する場合や、FPGA周辺の回路における不具合を吸収するためにも有用である。
ところで、FPGAでは、回路が再構築される期間、内部回路が不定の状態となり、FPGAの外部接続端子は、一部の制御信号端子を除きハイインピーダンス(Hi−Z)状態となる。このため、FPGAの周辺回路が信号の値を誤って認識し、FPGAおよび周辺回路を含む装置全体が誤動作するという問題がある。
そこで、装置の誤動作を防ぐため、次の対策のいずれかが用いられている。
対策(1)回路構築(コンフィグレーション)の期間、FPGAを含む装置全体をリセット状態にする。
対策(2)コンフィグレーションの期間は、FPGAにより影響をうける範囲の周辺回路をリセット状態にする。
対策(3)例えば図25に示すように、FPGA90の外部端子にプルアップ抵抗91またはプルダウン抵抗92を接続する。
対策(4)例えば図26に示すように、再構築の期間を表す信号に応じて、FPGAから外部の回路に出力される信号の値を固定するための回路93,94を設ける。
対策(5)FPGA内部に、外部端子に接続するプルアップ抵抗またはプルダウン抵抗を設ける。
対策(1)回路構築(コンフィグレーション)の期間、FPGAを含む装置全体をリセット状態にする。
対策(2)コンフィグレーションの期間は、FPGAにより影響をうける範囲の周辺回路をリセット状態にする。
対策(3)例えば図25に示すように、FPGA90の外部端子にプルアップ抵抗91またはプルダウン抵抗92を接続する。
対策(4)例えば図26に示すように、再構築の期間を表す信号に応じて、FPGAから外部の回路に出力される信号の値を固定するための回路93,94を設ける。
対策(5)FPGA内部に、外部端子に接続するプルアップ抵抗またはプルダウン抵抗を設ける。
また、装置の誤動作防止ではないが、回路が構築される部分を複数のブロックに分割し、いくつかのブロックを並行してコンフィグレーションするとともに、コンフィグレーションが完了したブロックから順に回路を動作させるFPGAが知られている。このFPGAによれば、全体のコンフィグレーションが完了する前に、一部のブロックとこれに接続する外部の回路の初期化動作が開始するので、コンフィグレーションを含んだ初期化処理時間が見かけ上短縮する。また、並行したコンフィグレーションによっても初期化処理時間が短縮する。
特開2001−186010号公報
しかしながら、上記(1)の装置全体をリセット状態にする手法では、回路を再構築するたびに装置全体がリセット状態となる。このことは、装置が構築される回路に処理を実行させていない場合でも同様である。例えば、暗号アルゴリズムを更新する場合には、サーバが暗号処理を実施していない場合でも、サーバの全処理を停止させ、サーバを再起動することによりリセット状態とすることが求められる。したがって、サーバを運用中にはFPGAの内部回路を再構築できない等、回路を再構築する時期には制限がある。また、上記(2)の周辺回路をリセット状態にする対策では、周辺回路の構成によってはリセットされる回路の範囲が大きくなる。例えば、周辺回路に汎用のLSI等が接続されている場合、このLSI全体およびその周辺の回路もリセット状態にすることが求められる。また、上記(3)および(4)の対策では、外付けの抵抗または論理回路の部品が必要となり、回路基板上においても部品の配置領域を確保する必要がある。また、上記(5)におけるFPGA内のプルアップ抵抗またはプルダウン抵抗は、FPGAの通常動作による信号出力に影響与えないよう、抵抗値の高いものが用いられる。しかし抵抗値が高いと抵抗値と容量値との積である時定数も大きくなり、抵抗による信号レベルの固定に時間がかかるため、信号の値が外部回路によって目的の値として認識されず誤動作となるおそれがある。
また、コンフィグレーションが完了したブロックから順に回路を動作させるFPGAは、コンフィグレーションの時間が見かけ上短縮するが、コンフィグレーションは全てのブロックに対して実行されるため、FPGA全体としてコンフィグレーションによる不定期間がなくなるわけではない。このFPGAにおける外部端子の信号についても、結局、上記の対策(1)〜(5)に示すような対策が必要となる。
上記事情に鑑み、本件開示の半導体装置、情報処理回路基板、情報処理装置、および暗号装置の課題は、半導体装置の周辺回路や処理装置全体をリセット状態にすることなく、内部の回路を再構築することにある。特に本件開示の暗号装置の課題は、装置全体をリセット状態とすることなく、暗号化処理の内容を更新することにある。
本件開示の半導体装置の基本形態は、
外部から取得した回路情報を供給する回路情報供給部と、
前記回路情報供給部が供給する回路情報に基づいて回路を構築する回路構築部と、
前記回路構築部に対し、回路構築の実行又は不実行を指定する指定部と、
前記指定部が回路構築の実行を指定した回路構築部が前記回路情報に応じた回路を構築する期間、前記回路構築部が出力する信号を1又は0に固定する信号固定部と、
外部接続端子を有し、
前記信号固定部は、前記指定部が回路構築の実行を指定した回路構築部が前記回路情報に応じた回路を構築する期間、前記回路構築部が前記外部接続端子から出力する信号を1又は0に固定する。
外部から取得した回路情報を供給する回路情報供給部と、
前記回路情報供給部が供給する回路情報に基づいて回路を構築する回路構築部と、
前記回路構築部に対し、回路構築の実行又は不実行を指定する指定部と、
前記指定部が回路構築の実行を指定した回路構築部が前記回路情報に応じた回路を構築する期間、前記回路構築部が出力する信号を1又は0に固定する信号固定部と、
外部接続端子を有し、
前記信号固定部は、前記指定部が回路構築の実行を指定した回路構築部が前記回路情報に応じた回路を構築する期間、前記回路構築部が前記外部接続端子から出力する信号を1又は0に固定する。
この基本形態によれば、複数の回路構築部のうち一部の回路構築部について回路の再構築を実行させ、残りの回路構築部について回路の構築を不実行とすることができる。また、このとき、回路を構築している回路構築部から出力される信号が固定されるので、回路の構築が不実行に指定された回路構築部は、回路の動作を停止せず処理を継続することができる。したがって、この半導体装置の周辺の回路や装置をリセット状態とすることなく回路の一部を更新することが可能となる。
以下、本件開示の半導体装置、情報処理回路基板、情報処理装置、および暗号装置の具体的な実施形態について説明する。
[第1実施形態]
図1は、情報処理装置の具体的な第1実施形態であるコンピュータシステムのハードウェア構成を示すブロック図である。
図1は、情報処理装置の具体的な第1実施形態であるコンピュータシステムのハードウェア構成を示すブロック図である。
図1に示すコンピュータシステム100は、CPU(Central Processing Unit)11、MCU(Memory Control Unit)12、メモリ13、IOC(Input/Output Controller)14、補助記憶装置15、LAN(Local Area Network)インターフェース16、および、暗号カード17を備えている。
CPU11は、コンピュータプログラムを実行することにより、コンピュータシステム100内の各部の動作を制御する。メモリ13は、CPU11によって実行されるコンピュータプログラムやデータを一時的に記憶する。補助記憶装置15は、例えばハードディスク装置であり、コンピュータプログラムやデータを格納している。MCU12はメモリ13の制御を担い、IOC14は、メモリ13よりもアクセス速度が低い補助記憶装置15の制御を担っている。また、IOC14は、PCI(Peripheral Component Interconnect)バス18を介してLANインターフェース16、および暗号カード17と接続されている。本実施形態におけるIOC14はPCIバス規格に基づき、LANインターフェース16および暗号カード17との間でデータの受け渡しを行う。LANインターフェース16は、このコンピュータシステム100とは別の図示しないコンピュータシステムと通信するための装置である。図1に示すコンピュータシステム100は、いわゆるサーバとして機能し、LANインターフェース16を介してネットワーク接続された別のコンピュータシステムに対し要求された情報を提供する。
図2は、図1に示す暗号カードのハードウェア構成を示すブロック図である。
図2に示す暗号カード17は、マイクロコントローラ171、メモリ172、コンフィグレーションROM173B、PCIバスブリッジ174、およびFPGA20を備えている。なお、以降の説明では、「コンフィグレーション」を「コンフィグ」と略称する。例えば、コンフィグレーションROMをコンフィグROMと略称する。ここで、暗号カード17は、上記基本形態における情報処理回路基板の一例に相当する。また、コンフィグROM173Bは、上記基本形態における記憶装置の一例に相当する。
PCIバスブリッジ174は、PCIバス18を介してIOC14(図1参照)と接続されており、IOC14との間でPCIバスとローカルバスのバスプロトコルの変換を行うとともにデータの受け渡しを行う。PCIバスブリッジ174、FPGA20およびマイクロコントローラ171は、暗号カード17内のローカルバスを介して互いに接続されている。また、マイクロコントローラ171とFPGA20はI2Cバスを介して接続されている。
FPGA20は、外部から取り込んだプログラムに応じた回路を内部に構築することが可能な半導体装置である。FPGA20は、マイクロコントローラ171から回路構築開始の指示を受けると、FPGA20に接続されたコンフィグROM173からコンフィグデータ(回路データ)を取り込んで回路を構築する。本実施形態のFPGA20には、暗号処理のための回路が構築される。
マイクロコントローラ171は、FPGA20に構築された回路に、この回路の処理に必要な情報を供給する。より詳細には、マイクロコントローラ171は暗号処理に必要な鍵データを保持し、FPGA20に鍵データを供給する。また、マイクロコントローラ171は、FPGA20に回路構築開始の指示を送信するのに加え、FPGA20内の複数の領域のうち、どの部分について回路の構築を実行するかを指定する。メモリ172は、マイクロコントローラ171で実行されるコンピュータプログラムが記憶している。マイクロコントローラ171は、メモリに記憶されたコンピュータプログラムに応じて各機能を実行する。
コンフィグROM173Bには、FPGA20内に構築させる回路を表すコンフィグデータ(回路データ)が記憶されている。以降、コンフィグデータを、構築された回路で処理されるデータと区別するため、プログラムと称する。暗号カード17には、初期の状態では、第1のコンフィグROM173AがFPGA20に接続されている。第1のコンフィグROM173Aには、入出力回路とDES暗号回路を構築させるためのプログラムが記憶されている。FPGA20は、第1のコンフィグROM173Aから読み出したプログラムに応じて入出力回路32およびDES暗号回路33を構築する。
DES暗号回路が更新される場合には、第1のコンフィグROM173Aが、第2のコンフィグROM173Bに取り替えられる。第2のコンフィグROM173Bは、AES暗号回路を表すプログラムを記憶する。図2には、FPGA20内部に入出力回路32およびDES暗号回路33がすでに構築され、さらに、AES暗号回路についての第2のコンフィグROM173Bが取り付けられた状態が示されている。この図2に示す状態で、FPGA20が、第2のコンフィグROM173Bからプログラムを取り込んで回路を再構築すると、DES暗号回路がAES暗号回路に更新されることとなる。
[暗号処理装置]
ここで、FPGAのハードウェアを説明するのに先立って、上述したコンピュータシステム100に構築される、暗号処理装置および暗号処理の概要を説明する。
ここで、FPGAのハードウェアを説明するのに先立って、上述したコンピュータシステム100に構築される、暗号処理装置および暗号処理の概要を説明する。
図3は、図1に示したコンピュータシステムに構築される暗号処理装置の機能ブロックを示すブロック図である。
図3に示す暗号処理装置300は、この暗号処理装置300に外部接続された図示しないコンピュータシステムに暗号化したデータを提供する装置であり、データベース31、入出力回路32、DES暗号回路33、鍵情報保持部34、および通信部35を備えている。
データベース31は、外部のコンピュータシステムに提供されるデータを記憶しており、このデータを入出力回路32に供給する。入出力回路32は、データベース31から供給されたデータをDES暗号回路33に入力するとともに、DES暗号回路33で処理されたデータを受け取り通信部35に出力する。また、入出力回路32は、DES暗号回路33でのデータの処理状況に応じてデータを一時的に保持するバッファ処理も行う。鍵情報保持部34は、暗号化に必要な鍵データを保持しており、鍵データをDES暗号回路33に入出力回路32を経由して渡す。DES暗号回路33は入出力回路32から渡されたデータをDESアルゴリズムに従って暗号化する。通信部35は、暗号化されたデータを外部のコンピュータシステムに送信する。
データベース31は、CPU11、IOC14、および補助記憶装置15の組合せによって構築される。入出力回路32およびDES暗号回路33はFPGA20で構築される。鍵情報保持部34は、マイクロコントローラ171およびメモリ172によって構築される。また通信部は、CPU11、IOC14、およびLANインターフェース16によって構築される。
この暗号処理装置300では、データベース31に記憶されたデータがDES暗号回路33で暗号化され、通信部35から送信される。また、本実施形態の暗号処理装置300では、DES暗号回路33が、要求に応じてより暗号強度の高いAES暗号回路36に更新される。
ここで、2つの暗号回路による暗号化処理の概要を説明する。
図4は、DES暗号回路による暗号化処理を説明するブロック図であり、図5は、AES暗号回路による暗号化処理を説明するブロック図である。
図4に示すDES暗号回路33は、入力データを鍵データに基づいて暗号化し、出力データとして出力する。
DES暗号回路33では、128ビット単位でレジスタ3311に入力されたデータは、64ビットごと取り出されて処理される。レジスタ3311から取り出されたデータは、置換部3312によりビット単位毎に並べ替えられる。一方、鍵データは、選択的置換部3321でパリティを除く56ビットが置換処理された後、上位側28ビットの上位ビットデータと下位側28ビットの下位ビットデータとに分けられる。この上位ビットデータと下位ビットデータとは巡回シフト部3323,3324,3326,3327による左巡回シフトと、選択的置換部3322,3325,3328による並べ替えは、16段分繰り返し実施される。各段階における選択的置換部3322,3325,3328の出力はラウンド鍵として用いられる。
置換部3312で並べ替えられたデータは上位ビットデータと下位ビットデータとに分けられる。f処理部3313では、下位ビットデータに対し、第1の配置換え、ラウンド鍵との排他論理和、複数ビット単位での値の置換、第2の配置換えを実行する。上位ビットデータは、排他論理和3314で、f処理部3313の処理結果データに対する排他論理和がとられる。次に、上位ビットデータと下位ビットデータとが入れ替えられ、f処理部3315および排他論理和3316で処理される。上位ビットデータと下位ビットデータの入れ替え処理、そしてf処理部および排他論理和による処理が16段分繰り返される。最後に、上位ビットデータと下位ビットデータを合わせたデータは、置換部3319でさらに並べ替えられ、レジスタ3320に入力される。レジスタ3320からはデータが128ビット単位で出力される。
図5に示すAES暗号回路36では、128ビットの入力データに対し、AddRoundkey部3611により、鍵データから生成されたラウンド鍵との排他的論理和が取られる。なお、AESにおけるラウンド鍵生成の詳細については説明を省略する。AddRoundkey部3611の処理結果のデータは、直列接続された9段のラウンド処理部3620によって順に処理される。各ラウンド処理部3620は、データを4×4バイトの行列とし各行を巡回シフトするShiftRows3612、入力の乗法逆元にアフィン変換を施すSubBytes3613、上記行列の各列の要素を計数とする多項式に特定の多項式を演算して得られる計数を出力するMixColomns3614、およびラウンド鍵との排他的論理和を取るAddRoundkey3615からなる。最後にShiftRows3621、SubBytes3622、およびAddRoundkey3623の処理を経て出力データが出力される。DESおよびAESによる暗号化のアルゴリズム自体は公知のものであり、これ以上の説明は省略する。
AESは、DESと同様、秘密暗号鍵方式およびブロック暗号化方式による暗号処理である。しかし、AESは、DESによる暗号化の安全性が低下したために米国が新たに暗号標準として公募し制定された方式であり、DESよりも暗号強度が高い。したがって、DES暗号回路33がAES暗号回路36に更新されることで、暗号処理装置300から出力されるデータの秘匿性が向上する。
[FPGAハードウェア]
続いて、暗号回路および入出力回路が構築可能なFPGAのハードウェアについて説明する。
続いて、暗号回路および入出力回路が構築可能なFPGAのハードウェアについて説明する。
図6は、FPGAのハードウェア構成を示すブロック図である。
図6に示すFPGA20は、IO−1からIO−4までの4つの入出力部21(21a,21b,21c,21d)、logic−1からlogic−9までの9つの論理構築部22(22a,22b,22c,22d,22e,22f,22g,22h,22i)、制御部23、および信号固定部24とを備えている。
入出力部21は、FPGA20の外部回路と接続する外部接続端子の入出力を決定し、論理構築部22は論理回路を構築する。
制御部23は、入出力部21および論理構築部22における回路の構築を制御する。より詳細には、制御部23は、コンフィグROM173(図2参照)に記憶された回路構築用のプログラムを読み出して、入出力部21および論理構築部22に供給する。コンフィグROM173に記憶されたプログラムは、入出力部21および論理構築部22のそれぞれに対応するプログラムの集合である。論理構築部22ではプログラムに応じて論理回路が構築され、入出力部21では外部接続端子に接続する接続回路が構築される。本実施形態のFPGA20では、4つの入出力部21および9つの論理構築部22のそれぞれに対し、回路構築の実行、不実行を指定することが可能となっている。
信号固定部24は、制御部23がプログラムを読み出して入出力部21および論理構築部22に供給する期間、回路構築が実行される入出力部および/または論理構築部構築と、構築が不実行となる入出力部および/または論理構築部との間で受け渡される信号の値を固定する。
ここで、入出力部21および論理構築部22のそれぞれは、上述した基本形態における回路構築部の一例に相当する。
図7は、FPGAのさらに詳細なハードウェア構成を示すブロック図である。
入出力部21のそれぞれは複数の入出力ブロック(IOB)210を備えており、論理構築部22のそれぞれは複数の論理ブロック(LB)220を備えている。入出力ブロック210は、外部接続端子のそれぞれに対応して設けられており、各外部接続端子の入出力を決定する。論理構築部22はFPGA20における最小論理機能に対応している。なお、FPGA20において、入出力ブロック210は外部接続端子の数に応じて設けられており、また、論理ブロック220もFPGA20が対応する回路規模に応じた数だけ設けられているが、図7には、構造を見やすくするため、入出力ブロック210を各入出力部21あたり6〜7個のみ示し、論理ブロック220を各論理構築部22あたり4つのみ示している。
図8は、図7に示す入出力ブロックの内部構成を示す回路図である。
入出力ブロック210は、信号を選択するSW1からSW5までのスイッチ211_1〜211_5、データラッチ212、入力バッファ213、出力部214、および選択制御部215を備えている。選択制御部215はシフトレジスタで構成されており、プログラムが入力される。図7に示す複数の入出力ブロック210が有する選択制御部215同士は直列に接続されており、回路構築時にはプログラムが、複数の入出力ブロック210の選択制御部215間で順次引き渡される。最終的には、各入出力ブロック210の選択制御部215には、プログラムのうち各入出力ブロック210に対応する部分が保持された状態で、プログラムの入力が停止する。つまり、図8に示す選択制御部215には、プログラムのうちこの入出力ブロック210に対応する部分が保持される。選択制御部215の各ビットに保持された値によってスイッチ211_1〜211_5の選択が決定され、外部接続端子(外部PIN)216に接続される回路が構築される。構築された回路によって、外部接続端子216における入出力、および、入出力ブロック210内において信号をクロックに同期させるか否かが決定される。
図9は、図8に示す入出力ブロックにおける出力部の内部構成を示す回路図である。
出力部214は、出力バッファ2141、信号を選択するセレクタ2142,2143、および、インバータまたはバッファからなる論理回路2144,2145を備えている。論理回路2144,2145には、外部からコンフィグフラグ信号(ConfigFlag)が入力される。コンフィグフラグ信号は、値が’0’の場合、この出力部214が含まれた入出力部21において回路の構築が実行されることを意味する。値が’1’の場合、回路の構築は実行されず、入出力部21は通常動作することを意味する。出力部214では、コンフィグフラグ信号の値が’1’の時、すなわち回路構築が実行されていない場合、外部接続端子216の状態は、入出力を決定するDIR信号および、スイッチ211_5(図8参照)からの出力に応じて決定される。一方、コンフィグフラグ信号の値が’0’の時、すなわち入出力部21において回路構築が行われている場合には、論理回路2144,2145に応じて、外部接続端子216の状態が決定する。図9に示す論理回路2144,2145の例では、入出力部21により回路構築が実行されている期間は、外部接続端子216は’1’の値に固定される。
図10は、図7に示す論理ブロックの内部構成を示す回路図である。
論理ブロック220は、信号を選択するSW1からSW16までのスイッチ221_1〜221_16、ANDゲート222、ORゲート223、XORゲート224、インバータ225_1,225_2,225_3、マルチプレクサ226,227、データラッチ228、および、選択制御部229を備えている。
選択制御部229はシフトレジスタを有しており、プログラムが入力される。図7に示す複数の論理ブロック220が有する選択制御部229同士は直列に接続されており、回路構築時にはプログラムが、複数の論理ブロック220の選択制御部229間で順次引き渡される。最終的には、各論理ブロック220の選択制御部229には、プログラムのうち各論理ブロック220に対応する部分が保持された状態で、プログラムの入力が停止する。つまり、図10に示す選択制御部229には、プログラムのうちこの論理ブロック220に対応する部分が保持される。選択制御部229の各ビットに保持された値によってスイッチ221_1〜221_16の選択が決定され、論理回路が構築される。より詳細には、スイッチ221_1〜221_16による選択によって、入力信号A,B,Cのうちいずれを用いるか、AND、OR、XORのうちいずれの論理ゲートを用いるか、そして、信号をデータラッチ228にラッチさせるか否かが決定される。
図8に示した入出力ブロック210には、回路構築が実行されている期間、外部接続端子216の状態を固定する出力部214が設けられているが、論理ブロック220については、信号固定部24(図6参照)によって各論理構築部22間で受け渡される信号が固定される。
図11は、信号固定部の内部構成を示す回路図である。
信号固定部24は、回路の構築が実行されていない通常動作時には、各論理構築部22間において受け渡される信号を伝達する。なお、図11は、信号固定部24のうち、論理構築部(Logic−1)22aと論理構築部(Logic−4)22dとの間において信号を受け渡す部分に代表させてその構成を示しているが、図に示す構成は他の論理構築部22間についても同様である。
信号固定部24は、複数種類の論理ゲート241,242,243,244,245,246を備えている。信号固定部24は、回路構築が指定された論理構築部が回路を構築している期間、この論理構築部から出力される信号を固定する。より詳細には、信号固定部24は、FPGA20における回路構築が実行される期間、回路構築が実行される論理構築部と、回路構築が不実行となる論理構築部との間において受け渡される信号を固定する。例えば、論理構築部(logic−4)22dに対応するコンフィグフラグ信号(ConfigFlag(Logic−4))の値が回路構築の実行を表す’0’の場合、論理構築部(logic−4)22dから、論理構築部(logic−1)22aに渡される信号が、’1’または’0’に固定される。例えば、ORゲート242の出力である、論理構築部(logic−1)22aへの入力信号Aは’1’に固定される。一方、ANDゲート243の出力である入力信号Bは’0’に固定される。このようにして、回路構築が実行されている論理構築部(Logic−4)22dから、回路構築が不実行の論理構築部(Logic−1)22aへ出力される信号が予め設定された値に固定される。これによって、論理構築部(Logic−4)22dから回路構築に伴う信号の不定状態が、論理構築部(Logic−1)22aへ伝達されることが防止され、論理構築部(Logic−1)22aに構築されていた回路は動作を継続することができる。
また、信号固定部24による信号の固定は、回路構築が不実行の論理構築部(Logic−1)22aから、回路構築が実行される論理構築部(Logic−4)22dへ入力される信号に対しても行われる。例えば、論理構築部(logic−4)22dへの入力信号Aは’1’に固定され、入力信号Bは’0’に固定される。
ここで、入出力ブロックの出力部214および信号固定部24のそれぞれは、上述した基本形態における信号固定部の一例に相当する。
続いて、回路の構築を制御する制御部23について説明する。
図12は、FPGAのハードウェア構成を制御部の詳細も含めて示すブロック図である。
FPGA20の制御部23は、I2Cインターフェース(I2CIF)231、コンフィグフラグレジスタ232、および、スタートアップ(Startup)制御部233を備えている。
I2Cインターフェース231は、FPGA20外部のマイクロコントローラ171(図2参照)とI2Cによる通信を行い、マイクロコントローラ171から設定情報を受信する。I2Cインターフェース231は、アクセス検出部231a、アクセス制御部231b、およびデータ保持部231cを備えている。例えば、I2Cインターフェース231は、マイクロコントローラ171から入出力部21および論理構築部22のそれぞれごとに回路構築の実行および不実行の指定を表すコンフィグフラグデータを受信し、コンフィグフラグレジスタ232に書きこむ。また、I2Cインターフェース231は、マイクロコントローラ171から回路構築の開始を表す構築開始指示情報を受信する。構築開始指示情報は、スタートアップ制御部233に供給される。
コンフィグフラグレジスタ232は、入出力部21および論理構築部22のそれぞれごとに回路構築の実行および不実行を指定する。コンフィグフラグレジスタ232は、I2Cインターフェース231を介して受信したコンフィグフラグデータを保持し、コンフィグフラグデータの各ビットの値を回路構築の期間中出力する。
スタートアップ制御部233は、コンフィグROM173に記憶されたプログラムを読み出して、入出力部21および論理構築部22に供給する。コンフィグROM173から読み出されるプログラムは、入出力部21および論理構築部22のそれぞれに対応するプログラムの集合である。なお、図12には、3つの入出力部21および3つの論理構築部22のみを図示している。4つの入出力部21および9つの論理構築部22は直列に接続されており、スタートアップ制御部233から供給されたプログラムを順次引き渡す。入出力部21および論理構築部22の内部では、論理ブロック220および入出力ブロック210内の選択制御部215,229(図8,10参照)を構成するシフトレジスタが直列に接続されている。スタートアップ制御部233から供給されたプログラムは、入出力部(IO−1)21aから論理構築部(Logic−9)22iまでのそれぞれが有する選択制御部215,229を順次伝達される。ただし、コンフィグフラグレジスタ232によって、回路構築の不実行が指定された入出力部21および/または論理構築部22では、入力されてきたプログラムを選択制御部215,229を経由させずそのまま次段に出力する。
ここで、コンフィグフラグレジスタ232は、上述した基本形態における指定部の一例に相当し、スタートアップ制御部233は上述した基本形態におけるプログラム供給部の一例に相当する。
図13は、制御部のスタートアップ制御部の内部構成を示すブロック図である。
スタートアップ制御部233は、スタート/ストップ制御部233a、コンフィグ用CLK発生回路233b、データカウンタ233c、およびデータバッファ233dを備えている。スタート/ストップ制御部233aは、FPGA20に対する構築開始指示を受け、コンフィグ用CLK発生回路233bにクロック(ConfigClock)を発生させる。このクロックはコンフィグROM173(図12参照)に、読み出しクロックとして供給される。データカウンタ233cは、適切な量のプログラムを読み出すため、コンフィグROM173から読み出すプログラムの数をカウントする。本実施形態のFPGA20では、入出力部21および/または論理構築部22ごとに回路構築の実行または不実行が指定され、不実行の部分に対応するプログラムは読み出さない。したがってデータカウンタ233cは、コンフィグフラグレジスタ232(図12参照)の出力に応じた数をカウントする。コンフィグフラグレジスタ232がカウントを終了すると、スタート/ストップ制御部233aは、プログラムの読出しを終了し、コンフィグ中信号の出力を中止する。データバッファ233dは、コンフィグROM173から読み出されたプログラムを入出力部(IO−1)21a(図12参照)に供給する。
図14は、コンフィグフラグレジスタと、入出力部および論理構築部を示すブロック図である。
コンフィグフラグレジスタ232は、コンフィグフラグデータを保持している。コンフィグフラグデータの各ビットは、4つの入出力部21および9つの論理構築部22のそれぞれに対応した、コンフィグフラグ(ConfigFlag)信号として出力される。コンフィグフラグ信号の値によって、回路構築の実行および不実行のいずれかを指定する。コンフィグフラグ信号は’0’が回路構築の実行を表し、’1’が回路構築の不実行を表す。コンフィグフラグレジスタ232の初期値は全て’0’であり、全ての入出力部21および論理構築部22で回路構築を行うことを意味する。コンフィグフラグレジスタ232は、コンフィグ中の信号を受信中の場合のみ、保持した値をコンフィグフラグの値として出力し、コンフィグ中ではない場合は、回路構築の不実行を表す’1’を出力する。
図15は、入出力部および論理構築部におけるプログラムの経路を説明する図である。図15には、FPGA20が有する4つの入出力部21および9つの論理構築部22のうち、3つの入出力部21が代表として示されている。
入出力部(IO−1)21aの内部論理Mは、この入出力部(IO−1)21aに属する複数の入出力ブロック210(図7参照)からなり、より詳細には、複数の入出力ブロック210が有する複数の選択制御部215(図8参照)が直列に接続されたものである。
入出力部(IO−1)21a内部には、プログラムの経路を制御するANDゲートG1およびセレクタG2が設けられている。入出力部(IO−1)21aに対応するコンフィグフラグ信号(ConfigFlag(IO−1))の値が’0’すなわち回路構築の実行を表す場合には、プログラムが内部論理Mを経由し(”OFF”で示す経路)、回路の構築が実行される。コンフィグフラグ信号の値が’1’すなわち回路構築の不実行を表す場合には、プログラムが内部論理Mを経由せず、内部論理Mを迂回して直ちに次段の入出力部(IO−2)21bに供給される(”ON”で示す経路)。
図16は、FPGAにおける回路の構築の動作を説明するフローチャートである。
回路の構築は、マイクロコントローラ171(図2参照)がI2Cバスを経由して、FPGA20にコンフィグフラグデータを送信した後、構築開始指示情報を送信することによって開始する。構築開始指示情報は、I2Cインターフェース231を介して、スタートアップ制御部233(図13参照)のスタート/ストップ制御部233aに入力される。これによって、スタートアップ制御部233が、コンフィグ中信号を出力し、コンフィグフラグレジスタ232に記憶されたコンフィグフラグデータの各ビットの値が、コンフィグフラグ信号として出力される(ステップS11)。また、スタートアップ制御部233は、コンフィグROM173からプログラムを読み出し、入出力部21および論理構築部22に供給する。
入出力部(IO−1)21a(図15参照)は、回路構築の実行が指定されている場合、つまり、対応するコンフィグフラグ信号(ConfigFlag(IO−1))の値が’OFF’すなわち’0’の場合(ステップS13でOFF)、スタートアップ制御部233から供給されてくるプログラムを内部論理Gに入力させて、回路を構築する(ステップS14)。また、回路が構築される場合、外部接続端子216(図9)に出力される信号は、出力部214によって固定される。この一方で、回路構築の不実行が指定されている場合、つまり、コンフィグフラグ(IO−1)が’ON’すなわち’1’の場合(ステップS13でON)、入出力部(IO−1)21a(図15参照)は、回路を構築せず、供給されてくるプログラムを迂回させて、次段の入出力部(IO−2)21bに渡す。上記ステップS13およびS14の動作は、入出力部(IO−1)21aに続いて接続された、入出力部(IO−2)21bから入出力部(IO−4)21d、および、論理構築部(Logic−1)22aから論理構築部(Logic−9)22iについても同様である(ステップS15〜S22)。なお、回路構築が実行される論理構築部22から回路構築が実行されない論理構築部22に出力される信号、また逆に向かう信号は、信号固定部24(図11)によって固定される。
入出力部21および論理構築部22のそれぞれにおける、上記ステップS13からS22までの処理は、時間的には並行して実行される。
コンフィグROM173からのプログラムの読込みが完了すると、回路構築の実行が指定された入出力部21および論理構築部22では回路の構築が完了する(ステップS23)。このとき、スタートアップ制御部233がコンフィグ中信号の出力を停止し、コンフィグフラグレジスタ232からのコンフィグフラグは、回路構築不実行を表す’1’となる。つまりコンフィグフラグの設定が解除される(ステップS24)。これによって、論理構築部22同士で受け渡される信号の固定が解除され、入出力部21に対応する外部接続端子からは、構築された回路による信号が出力される。
[暗号装置の構築および再構築]
続いて、暗号処理装置300(図3参照)における、暗号回路の構築および再構築について説明する。ここでは、DES暗号回路および入出力回路が構築されたFPGA20において、DES暗号回路のみがAES暗号回路として再構築される例を説明する。
続いて、暗号処理装置300(図3参照)における、暗号回路の構築および再構築について説明する。ここでは、DES暗号回路および入出力回路が構築されたFPGA20において、DES暗号回路のみがAES暗号回路として再構築される例を説明する。
まず、再構築の前提として、DES暗号回路および入出力回路の構築について説明する。
図17は、コンフィグROMに記憶されたプログラムと、FPGAで構築される回路を説明する図である。図17のパート(A)には、コンフィグROMに記憶されたプログラムが、コンフィグROMから読み出される順に並んで示されている。
コンフィグROMに記憶されたプログラム40Aは、FPGA20の4つの入出力部21および9つの論理構築部22のそれぞれで構築される回路を表すプログラム41A,42A,43Aの集合である。論理構築部(Logic−9)22iから論理構築部(Logic−4)22dに対応するプログラム41Aは、図4に示すDES暗号回路を表すものとなっている。また、論理構築部(Logic−3)22cから論理構築部(Logic−1)22aに対応するプログラム42Aの集合は入出力回路を表すものとなっている。また、入出力部(IO−4)21dから入出力部(IO−1)21aに対応するプログラム43Aの集合は、FPGA20の外部接続端子の状態を設定する回路を表すものとなっている。
図2に示す暗号カード17で、図17のパート(A)に示すプログラム40Aが記憶されたコンフィグROM173Aが取り付けられた状態で、マイクロコントローラ171から、全ての論理構築部22および入出力部21について回路構築の実行が指定され、構築開始指示されると、FPGA20はコンフィグROM173Aからプログラム40Aを読出して内部に回路を構築する。
図17のパート(B)には、FPGAに回路が構築された状態が示されている。FPGA20の論理構築部(Logic−9)22iから論理構築部(Logic−4)22dには、DES暗号回路が構築されている。また、論理構築部(Logic−3)22cから論理構築部(Logic−1)22aには入出力回路が構築されている。また、入出力部(IO−4)21dから入出力部(IO−1)21aには、FPGA20外部のPCIBusBridge174およびマイクロコントローラ171と信号を入出力する回路が構築されている。回路構築の完了後、FPGA20では、入出力回路32がPCIBusBridge174およびマイクロコントローラ171から送られてくる暗号処理対象のデータ、および鍵データを受信してDES暗号回路33に供給し、DES暗号回路33がデータを暗号化する。暗号化されたデータは、入出力回路32によって、PCIBusBridge174に出力される。FPGA20での回路構築によって、図3に示す暗号処理装置300が完成する。
次に、DES暗号回路33をAES暗号化回路に更新する場合には、コンフィグROMを入れ替えて回路の再構築を実行する。
図18は、再構築のためのコンフィグROMに記憶されたプログラムとFPGAにおける回路構築を説明する図である。
図18のパート(A)には、コンフィグROM137B(図2参照)に記憶されたプログラムが、コンフィグROMから読み出される順に並んで示されている。
プログラム40Bは、FPGA20の4つの入出力部21および9つの論理構築部22のうち、論理構築部(Logic−9)22iから論理構築部(Logic−4)22dに対応するプログラム41Bの集合である。プログラム40Bは図5に示すAES暗号回路を表している。
回路の再構築では、図17に示すプログラム40Aが記憶されたコンフィグROM173A(図2参照)を、図18に示すプログラム40Bが記憶されたコンフィグROM173Bに置換え、マイクロコントローラ171から、論理構築部(Logic−9)22iから論理構築部(Logic−4)22dまでのみについて、回路再構築の実行を指定し、残りの論理構築部22a〜22cおよび入出力部21については回路再構築の不実行を指定する。マイクロコントローラ171からの構築開始指示によって、回路の再構築が実行される。
このとき、図14において、論理構築部22iから論理構築部22dに対応するコンフィグフラグが回路構築の実行を表すOFF状態すなわち‘0‘となり、論理構築部22a〜22cおよび入出力部21に対応するコンフィグフラグが回路構築の不実行を表すON状態すなわち’1’となる。この場合、論理構築部22i〜22dでは、取り込まれたプログラムに応じて回路が構築されるが、論理構築部22a〜22cおよび入出力部21では、取り込んだプログラムは回路構築に用いられず、そのまま次段に出力される。例えば、図15に示す入出力部(IO−1)21aでは、コンフィグフラグ(IO−1)が回路構築の不実行を表すON状態となっており、入力されてくるプログラムは内部論理Mを迂回して出力される。
図18のパート(B)には、FPGAにおける回路の再構築実行中の状態が示されている。FPGA20の論理構築部22iから論理構築部22dまでは回路の構築が進行中であり、内部の論理は不確定の状態となる。このとき、回路が構築される論理構築部(22i〜22d)と回路が構築されない論理構築部(22a〜22c)との間で受け渡される信号は、信号固定部24によって固定される。例えば、図11に示す信号固定部24において、論理構築部(Logic−4)22dの回路構築を指定するコンフィグフラグ(Logic−4)がOFF状態となっており、論理構築部(Logic−4)22dと論理構築部(Logic−1)22aとの間で受け渡される信号が’1’または’0’に固定される。なお、回路構築を実行する論理構築部(22i〜22d)から出力される信号は、信号固定部24により回路における意味に応じて、’1’および’0’に対応する論理ゲート242,243に接続されるよう論理回路が構築されることが好ましい。例えば、暗号回路がデータを受け付け可能か否かを表す信号を出力する場合、この信号は、受付可能でないことを表す値に固定されるよう、信号固定部24内の論理ゲート242,243に接続されることが好ましい。
信号が固定されることによって、入出力回路32は、FPGA20における回路の再構築中でも動作を継続することができる。入出力回路32は、暗号回路にデータを供給したり、暗号回路からデータを受け取ったりすることはできない。しかしながら、例えば、PCIBusBridge174からのアクセスに対しては、暗号処理を実行できないため、データの待機を要求するデータをもって応答することが可能となる。したがって、FPGA20における回路の再構築時に、FPGA20に接続されたPCIBusBridge174およびマイクロコントローラ171をリセット状態にする必要がない。
ここで、DES暗号回路33は、上述した基本形態における第1の情報処理回路の一例に相当するとともに、第1の情報暗号回路の一例にも相当する。また、AES暗号化回路は、上述した基本形態における第2の情報処理回路の一例に相当するとともに、第2の情報暗号回路の一例にも相当する。
[外部接続端子の設定変更]
上述した再構築の例では、入出力部21における回路の再構築は不実行としたが、本実施形態のFPGA20においては、入出力部21における回路の再構築を実行することにより、外部接続端子の設定を変更することが可能である。
上述した再構築の例では、入出力部21における回路の再構築は不実行としたが、本実施形態のFPGA20においては、入出力部21における回路の再構築を実行することにより、外部接続端子の設定を変更することが可能である。
図19は、再構築のためのコンフィグROMに記憶された別のプログラムとFPGAにおける回路構築を説明する図である。
図19のパート(A)に示すプログラム40Cには、論理構築部(Logic−9)22iから論理構築部(Logic−4)22dに対応するAES暗号回路に加え、入出力部(IO−3)21cに対応する外部端子設定回路のプログラムも含まれている。
図19に示す回路の再構築の例では、マイクロコントローラ171が、論理構築部(Logic−9)22iから論理構築部(Logic−4)22dまで、および入出力部(IO−3)21cについて、回路再構築の実行を指定する。この場合、論理構築部22i〜22dおよび入出力部(IO−3)21cでは、取り込まれたプログラムに応じて回路が構築される。
図19のパート(B)には、FPGAにおける回路の再構築実行中の状態が示されている。FPGA20の入出力部(IO−3)21cでは回路が構築されている。このとき、回路が構築される入出力部(IO−3)21cにおける出力部214(図9参照)では、コンフィグフラグ信号が’0’となっており、外部接続端子の状態が固定される。外部接続端子の回路構築が実行される場合、この外部接続端子と接続されるPCIBusBridge174およびマイクロコントローラ171とのデータの受け渡しは制限されるが、外部接続端子の状態が回路構築に起因する不定状態とならずに固定されるため、回路の再構築時にFPGA20に接続されたPCIBusBridge174およびマイクロコントローラ171をリセット状態にする必要がない。
このことは、上記[発明の開示]欄で説明した、基本形態に対し、「半導体装置が外部接続端子を備えたものであり、上記信号固定部は上記外部接続端子に出力される信号についても固定するものである」という応用形態が好適であることを意味する。ここで、出力部214は、上記応用形態の信号固定部の一例に相当する。
[第2実施形態]
次に、半導体装置、情報処理回路基板、情報処理装置、および暗号装置の具体的な第2実施形態について説明する。以下の第2実施形態は、FPGAの入出力部および論理構築部にプログラムバッファが備えられている点が第1実施形態のFPGAと異なり、残りの点は第1実施形態と同じである。したがって、第1実施形態における各要素と同一の要素には同一の符号を付けて示し、前述の実施形態との相違点について説明する。
次に、半導体装置、情報処理回路基板、情報処理装置、および暗号装置の具体的な第2実施形態について説明する。以下の第2実施形態は、FPGAの入出力部および論理構築部にプログラムバッファが備えられている点が第1実施形態のFPGAと異なり、残りの点は第1実施形態と同じである。したがって、第1実施形態における各要素と同一の要素には同一の符号を付けて示し、前述の実施形態との相違点について説明する。
図20は、第2実施形態におけるFPGAの入出力部を示す図である。図20には、第2実施形態におけるFPGAが備える入出力部および論理構築部の代表として、2つの入出力部51a,51bの内部構成が示されている。
図20に示す入出力部(IO−1)51aには、プログラムの迂回経路にプログラムバッファ510aが設けられている。プログラムバッファ510aは、入出力部(IO−1)51aにおける回路再構築の不実行が指定された場合に、仮に回路構築の実行が指定されたとした場合に、内部論理Mが取り込む量のプログラムを保持し、保持したプログラムを保持した順に出力する回路である。プログラムバッファ510aは、カウンタ511aおよびバッファ512aを備えている。バッファ512aは、入出力部(IO−1)51aに入力されてきたプログラムを保持する。カウンタ511aは、入出力部(IO−1)51aに入力されてきたプログラムの量をカウントする。カウンタ511aによりカウントされた量が、内部論理Mによって取り込まれるプログラムの量と同じになった時点で、バッファ512aに保持されたプログラムが、保持された順に、次段の入出力部(IO−2)51bに出力される。
図21は、図20に示すカウンタのカウント値およびバッファの入出力データを示すタイミングチャートである。
ここでは、入出力部(IO−1)51a(図20参照)の内部論理Mが11ビット分のプログラムを取り込むものとして説明する。
入出力部(IO−1)51aに入力されてくるプログラムは、D0から順にバッファ512aに入力される(Buffer_in)。また、カウンタ511aによってプログラムの量がカウントされる(Counter)。カウンタ511aのカウント値が10に達すると、バッファ512aに保持されたプログラムが、D0から順に出力される(Buffer_out)。
上述したプログラムバッファの構成および動作は、次段の入出力部(IO−2)51b、ならびに、図21に図示されない残りの入出力部および論理構築部についても共通である。ただし、バッファ512が保持するプログラムの量、およびバッファ512から出力が開始されるカウンタ511aのカウント値は、入出力部および論理構築部それぞれの内部論理Mによって取り込まれるプログラムの量に合わせられている。
第2実施形態におけるFPGAでは、入出力部および論理構築部のそれぞれにおいて、回路構築の不実行が指定された場合であっても、回路構築を実行した場合と同じタイミングで、プログラムが次段に出力される。上述した第1実施形態では、例えば図19のパート(A)に示すように、コンフィグROMに記憶されたプログラムからは、回路構築が不実行となる入出力部および論理構築部に対応する部分が取り除かれている必要がある。しかし、第2実施形態におけるFPGAでは、コンフィグROMに、回路構築が不実行となる入出力部および/または論理構築部の分も含め(ダミーデータであってもよい)プログラムを記憶させることができる。したがって、プログラムを作成する際に、回路構築の実行/不実行に合わせてプログラムを編集する必要がない。
このことは、上記[発明の開示]欄で説明した基本形態に対し、「上記複数の回路構築部は上記集合プログラムを順次引き渡すよう直列接続されたものであり、上記プログラム供給部は、上記複数の回路構築部のそれぞれに対応するプログラムがこの複数の回路構築部の接続順に並んだ集合プログラムをこの複数の回路構築部に供給するものであり、上記複数の回路構築部のそれぞれは、上記指定部によって回路再構築の不実行が指定された場合に、仮に回路構築の実行が指定されたとした場合に取り込む量のプログラムを保持し、保持したプログラムを保持した順に出力するプログラム迂回部を備えた」応用形態が好適であることを意味する。ここで、プログラムバッファ510aは、上記応用形態のプログラム迂回部の一例に相当する。
[第3実施形態]
次に、半導体装置、情報処理回路基板、情報処理装置、および暗号装置の具体的な第3実施形態について説明する。以下の第3実施形態は、FPGAの制御部が第1実施形態のFPGAと異なり、残りの点は第1実施形態と同じである。したがって、第1実施形態における各要素と同一の要素には同一の符号を付けて示し、第1実施形態との相違点について説明する。
次に、半導体装置、情報処理回路基板、情報処理装置、および暗号装置の具体的な第3実施形態について説明する。以下の第3実施形態は、FPGAの制御部が第1実施形態のFPGAと異なり、残りの点は第1実施形態と同じである。したがって、第1実施形態における各要素と同一の要素には同一の符号を付けて示し、第1実施形態との相違点について説明する。
図22は、第3実施形態におけるFPGAのハードウェア構成を示すブロック図である。
図22に示すFPGA60は、制御部63にI2Cインターフェースを有しない点が図12に示すFPGAと異なる。図22に示すFPGA60では、コンフィグフラグデータはI2C経由ではなく、コンフィグROM673からスタートアップ制御部633を経由して供給される。コンフィグROM673には、入出力部および論理構築部の回路プログラムに加え、コンフィグフラグデータが記憶される。なお、コンフィグフラグデータは、回路プログラムよりも先に読み出される位置に記憶されている。また、スタートアップ制御部633は、コンフィグROM673から読み出されるデータからコンフィグフラグデータを取り出し、コンフィグフラグレジスタ232に送信する。第3実施形態におけるFPGAでは、回路の再構築の際に、マイクロコントローラからI2Cを経由してコンフィグフラグデータを送信する必要がない。したがって、暗号カードの構成を簡略化することが可能である。
[第4実施形態]
次に、半導体装置、情報処理回路基板、情報処理装置、および暗号装置の具体的な第4実施形態について説明する。以下の第4実施形態は、FPGAの制御部がコンフィグROMの代わりにRAM(Read Access Memory)やEEPROM(Electrical Erasable Read Only Memory)などの書き換え可能な記憶媒体からデータを読み出すことと、暗号カードがコンフィグROMの代わりに書き換え可能な記憶媒体を備えた点が第1実施形態と異なる。
次に、半導体装置、情報処理回路基板、情報処理装置、および暗号装置の具体的な第4実施形態について説明する。以下の第4実施形態は、FPGAの制御部がコンフィグROMの代わりにRAM(Read Access Memory)やEEPROM(Electrical Erasable Read Only Memory)などの書き換え可能な記憶媒体からデータを読み出すことと、暗号カードがコンフィグROMの代わりに書き換え可能な記憶媒体を備えた点が第1実施形態と異なる。
図23は、第4実施形態における暗号カードの構成を示すブロック図である。
図23に示す暗号カード77は、コンフィグRAM773を備えており、FPGA70はこのコンフィグRAM773からプログラムを読み出すように構成されている。また、コンフィグRAM773はマイクロコントローラ771とも接続されており、マイクロコントローラ771によって内容が書換え可能となっている。図23に示す暗号カードでは、マイクロコントローラ771が、コンフィグRAM773のプログラムを、再構築する回路に対応したものに書換えてから、FPGA70に回路の再構築を実行させる。
図23に示す暗号カード77およびFPGA70によれば、FPGA内部の回路を更新する際に、例えばコンフィグROMといったハードウェア部品を交換する労力が不要となる。
これまで説明した各実施形態では、「発明の開示」で説明した基本形態における半導体装置として単体のFPGAが示されているが、この半導体装置は、例えば、再構築が不可能な、固定された論理回路部分と、再構築が可能な回路構築部とが組み合わされたものであってもよい。
図24は、固定された論理回路部分と再構築が可能な回路構築部とが組み合わされた半導体装置の一例を概略的に示す図である。
図24に示すIC800は、特定用途向けに設計されたASIC(Application Specific Integrated Circuit)であり、その内部に、回路が再構築が可能なFPGA80が含まれている。図24に示すIC800は、FPGA80の一部分で回路の再構築が実行されても、残りの部分では回路が動作可能である。
また、これまで説明した具体的な各実施形態では、「発明の開示」で説明した基本形態における回路構築部の一例として4つの入出力部21および9つの論理構築部が示されているが、この回路構築部は、構築される回路の規模に対応して複数であればよく、4つまたは9つ以外の数であってもよい。
また、具体的な各実施形態に対する上記説明では、上記基本形態における情報処理装置の一例としてサーバとして機能するコンピュータシステム100が示されているが、この情報処理装置は、クライアントとして機能するものであってもよく、あるいはスタンドアロンで動作するものであってもよい。また、具体的な各実施形態に対する上記説明では、基本形態における情報処理装置の一例として、データベース、暗号回路、および通信部を備えた暗号処理装置が示されているが、この情報処理装置は、外部から入力された情報に対しハードウェア回路を用いた処理を実行するものであればよい。
また、具体的な各実施形態に対する上記説明では、上記基本形態における半導体装置に構築された入出力回路の一例として、暗号回路にデータを入出力する入出力回路32が示されているが、基本形態における入出力回路は、半導体装置に構築された第1の情報処理回路に処理データを入出力するものであればよく、処理データの入出力以外の処理を実行するものであってもよい。例えば、データの演算処理を行うものであってもよい。
また、具体的な各実施形態に対する上記説明では、上記基本形態における第1の情報暗号回路の一例としてDES暗号回路が示され、第2の情報暗号回路の一例としてAES暗号回路が示されているが、これらの暗号回路は、DESまたはAES以外にも、トリプルDESであってもよく、あるいはRSAや他の暗号方式によるものであってもよい。また、各実施形態に対する上記説明では、暗号化処理の回路が示されているが、基本形態における情報暗号回路は、暗号化されたデータに対する復号化処理の回路であってもよい。
また、具体的な各実施形態に対する上記説明では、上記基本形態における第1の情報処理回路および第2の情報処理回路の一例として暗号回路が示されているが、この情報処理回路は、暗号回路以外にも例えば数値演算回路であってもよい。
Claims (8)
- 外部から取得した回路情報を供給する回路情報供給部と、
前記回路情報供給部が供給する回路情報に基づいて回路を構築する回路構築部と、
前記回路構築部に対し、回路構築の実行又は不実行を指定する指定部と、
前記指定部が回路構築の実行を指定した回路構築部が前記回路情報に応じた回路を構築する期間、前記回路構築部が出力する信号を1又は0に固定する信号固定部と、
外部接続端子を有し、
前記信号固定部は、前記指定部が回路構築の実行を指定した回路構築部が前記回路情報に応じた回路を構築する期間、前記回路構築部が前記外部接続端子から出力する信号を1又は0に固定することを特徴とする半導体装置。 - 複数の前記回路構築部は、互いに前記回路情報を順次転送するように直列に接続され、
前記回路情報供給部は、複数の前記回路構築部のそれぞれに対応する回路情報を、複数の前記回路構築部のそれぞれに供給し、
複数の前記回路構築部は、前記指定部から回路再構築の不実行を指定された場合に対応する回路情報を保持して出力する回路情報迂回部を有することを特徴とする請求項1記載の半導体装置。 - 記憶装置と前記記憶装置に接続された半導体回路装置を有する情報処理装置において、
前記記憶装置は、前記半導体回路装置の回路情報を格納し、
前記半導体回路装置は、
前記記憶装置から取得した回路情報を供給する回路情報供給部と、
前記回路情報供給部が供給する回路情報に基づいて回路を構築する回路構築部と、
前記回路構築部に対し、回路構築の実行又は不実行を指定する指定部と、
前記指定部が回路構築の実行を指定した回路構築部が前記回路情報に応じた回路を構築する期間、前記回路構築部が出力する信号を1又は0に固定する信号固定部と、
外部接続端子を有し、
前記信号固定部は、前記指定部が回路構築の実行を指定した回路構築部が前記回路情報に応じた回路を構築する期間、前記回路構築部が前記外部接続端子から出力する信号を1又は0に固定することを特徴とする情報処理装置。 - 複数の前記回路構築部は、互いに前記回路情報を順次転送するように直列に接続され、
前記回路情報供給部は、複数の前記回路構築部のそれぞれに対応する回路情報を、複数の前記回路構築部のそれぞれに供給し、
複数の前記回路構築部は、前記指定部から回路再構築の不実行を指定された場合に対応する回路情報を保持して出力する回路情報迂回部を有することを特徴とする請求項3記載の情報処理装置。 - 前記回路構築部は、データを暗号化する暗号化回路を構築することを特徴とする請求項3又は4に記載の情報処理装置。
- 前記回路構築部は、暗号化された暗号データを復号化する復号化回路を構築することを特徴とする請求項3又は4に記載の情報処理装置。
- 半導体装置の構築方法において、
回路情報供給部が、外部から取得した回路情報を供給するステップと、
回路構築部が、前記回路情報供給部が供給する回路情報に基づいて回路を構築するステップと、
指定部が、前記回路構築部に対し、回路構築の実行又は不実行を指定するステップと、
信号固定部が、前記指定部により回路構築の実行を指定した回路構築部が前記回路情報に応じた回路を構築する期間、前記回路構築部が出力する信号を1又は0に固定するステップと、
外部接続端子を有し、
前記信号固定部が、前記指定部により回路構築の実行を指定した回路構築部が前記回路情報に応じた回路を構築する期間、前記回路構築部が出力する信号を1又は0に固定するステップは、前記指定部が回路構築の実行を指定した回路構築部が前記回路情報に応じた回路を構築する期間、前記回路構築部が前記外部接続端子から出力する信号を1又は0に固定することを特徴とする半導体装置の構築方法。 - 複数の前記回路構築部は、互いに前記回路情報を順次転送するように直列に接続され、
前記回路情報供給部は、複数の前記回路構築部のそれぞれに対応する回路情報を、複数の前記回路構築部のそれぞれに供給し、
複数の前記回路構築部は、前記指定部から回路再構築の不実行を指定された場合に対応する回路情報を保持して出力する回路情報迂回部を有することを特徴とする請求項7記載の半導体装置の構築方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2008/067844 WO2010038293A1 (ja) | 2008-10-01 | 2008-10-01 | 半導体装置、情報処理装置及び半導体装置の構築方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2010038293A1 JPWO2010038293A1 (ja) | 2012-02-23 |
JP5273152B2 true JP5273152B2 (ja) | 2013-08-28 |
Family
ID=42073086
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010531686A Expired - Fee Related JP5273152B2 (ja) | 2008-10-01 | 2008-10-01 | 半導体装置、情報処理装置及び半導体装置の構築方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8436649B2 (ja) |
JP (1) | JP5273152B2 (ja) |
WO (1) | WO2010038293A1 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104622815A (zh) * | 2013-11-12 | 2015-05-20 | 天津大学 | 一种含环醚侧基两亲性聚合物冻干粉及其组合物和应用 |
US9425961B2 (en) * | 2014-03-24 | 2016-08-23 | Stmicroelectronics S.R.L. | Method for performing an encryption of an AES type, and corresponding system and computer program product |
JP5945301B2 (ja) * | 2014-07-03 | 2016-07-05 | アンリツ株式会社 | 測定装置及び測定方法 |
JP6620595B2 (ja) * | 2016-02-25 | 2019-12-18 | 富士通株式会社 | 情報処理システム、情報処理装置、管理装置、処理プログラム、及び処理方法 |
US10236888B2 (en) * | 2016-03-29 | 2019-03-19 | Arm Ltd. | Correlated electron switch device |
US11165720B2 (en) * | 2017-12-19 | 2021-11-02 | Xilinx, Inc. | Network interface device |
US10686731B2 (en) | 2017-12-19 | 2020-06-16 | Xilinx, Inc. | Network interface device |
US10686872B2 (en) | 2017-12-19 | 2020-06-16 | Xilinx, Inc. | Network interface device |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07154241A (ja) * | 1993-11-29 | 1995-06-16 | Olympus Optical Co Ltd | プログラマブル集積回路を用いた電子回路 |
JP2001186010A (ja) * | 1999-12-24 | 2001-07-06 | Fujitsu Ltd | フィールド・プログラマブル・ゲートアレイ |
JP2005115699A (ja) * | 2003-10-08 | 2005-04-28 | Murata Mach Ltd | データ処理装置 |
JP2006166430A (ja) * | 2004-12-02 | 2006-06-22 | Altera Corp | 集積回路上で揮発性と不揮発性プログラム可能ロジックを結合させるための技術 |
JP2008102043A (ja) * | 2006-10-19 | 2008-05-01 | Fujitsu Ltd | データ生成方法、結線チェックシステム、およびデータ生成プログラム |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5868666A (en) | 1993-11-26 | 1999-02-09 | Olympus Optical Co., Ltd. | Endoscope apparatus using programmable integrated circuit to constitute internal structure thereof |
US6654889B1 (en) * | 1999-02-19 | 2003-11-25 | Xilinx, Inc. | Method and apparatus for protecting proprietary configuration data for programmable logic devices |
JP2007251329A (ja) * | 2006-03-14 | 2007-09-27 | Matsushita Electric Ind Co Ltd | プログラマブルロジックデバイス |
-
2008
- 2008-10-01 WO PCT/JP2008/067844 patent/WO2010038293A1/ja active Application Filing
- 2008-10-01 JP JP2010531686A patent/JP5273152B2/ja not_active Expired - Fee Related
-
2011
- 2011-03-30 US US13/064,550 patent/US8436649B2/en not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07154241A (ja) * | 1993-11-29 | 1995-06-16 | Olympus Optical Co Ltd | プログラマブル集積回路を用いた電子回路 |
JP2001186010A (ja) * | 1999-12-24 | 2001-07-06 | Fujitsu Ltd | フィールド・プログラマブル・ゲートアレイ |
JP2005115699A (ja) * | 2003-10-08 | 2005-04-28 | Murata Mach Ltd | データ処理装置 |
JP2006166430A (ja) * | 2004-12-02 | 2006-06-22 | Altera Corp | 集積回路上で揮発性と不揮発性プログラム可能ロジックを結合させるための技術 |
JP2008102043A (ja) * | 2006-10-19 | 2008-05-01 | Fujitsu Ltd | データ生成方法、結線チェックシステム、およびデータ生成プログラム |
Also Published As
Publication number | Publication date |
---|---|
US8436649B2 (en) | 2013-05-07 |
WO2010038293A1 (ja) | 2010-04-08 |
US20110175645A1 (en) | 2011-07-21 |
JPWO2010038293A1 (ja) | 2012-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5273152B2 (ja) | 半導体装置、情報処理装置及び半導体装置の構築方法 | |
CN101401103B (zh) | 用于跨越多个处理器的安全启动的系统和方法 | |
US9363078B2 (en) | Method and apparatus for hardware-accelerated encryption/decryption | |
CN100583039C (zh) | 用于选择随机处理器来启动多处理器系统的系统和方法 | |
US9104894B2 (en) | Hardware enablement using an interface | |
US9418246B2 (en) | Decryption systems and related methods for on-the-fly decryption within integrated circuits | |
CN100501756C (zh) | 用于启动多处理器设备的系统和方法 | |
JP2021528793A (ja) | プログラマブルロジックデバイスのためのキープロビジョニングシステム及び方法 | |
TW201717098A (zh) | 具有金鑰雜湊訊息識別碼之處理器,方法,系統及指令 | |
TWI472913B (zh) | 積體電路晶片以及在積體電路晶片上執行可程式化測式引擎(pcdte)的方法 | |
US20120087488A1 (en) | Cryptographic processor with dynamic update of encryption state | |
EP3513336A1 (en) | Fpga platform as a service (paas) | |
US20230315913A1 (en) | Multi-chip secure and programmable systems and methods | |
US7403615B2 (en) | Methods and apparatus for accelerating ARC4 processing | |
JP2004070499A (ja) | メモリデバイスおよび暗号化/復号方法 | |
CN104484615B (zh) | 适用于可重构阵列架构的基于空间随机化抗故障攻击方法 | |
WO2017209890A1 (en) | Single clock cycle cryptographic engine | |
JP2003324423A (ja) | データ処理方法、暗号化方法、復号化方法、認証方法及びこれらの装置 | |
US12001362B2 (en) | Dynamically reprogrammable topologically unique integrated circuit identification | |
Paldanius | Reference Cryptographic Accelerator: Implementing AES Algorithm on an FPGA | |
CN112470158A (zh) | 用于可编程逻辑器件的故障表征系统和方法 | |
EP4156014A1 (en) | Integrated circuit package reconfiguration mechanism | |
Zhao et al. | A Lightweight Hardware-Assisted Security Method for eFPGA Edge Devices | |
KR20030043451A (ko) | 대칭 및 비대칭키 암호 연산 처리 시스템 및 그 처리 방법 | |
JP2007281994A (ja) | 半導体集積回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121211 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130207 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130416 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130429 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |