(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-20
(45)【発行日】2022-06-28
(54)【発明の名称】演算装置および中断方法
(51)【国際特許分類】
G06F 9/38 20060101AFI20220621BHJP
G06F 11/07 20060101ALI20220621BHJP
【FI】
G06F9/38 380X
G06F11/07 151
G06F11/07 140Q
(21)【出願番号】P 2018099978
(22)【出願日】2018-05-24
【審査請求日】2020-09-17
【前置審査】
(73)【特許権者】
【識別番号】319013263
【氏名又は名称】ヤフー株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】特許業務法人酒井国際特許事務所
(72)【発明者】
【氏名】木下 華七子
(72)【発明者】
【氏名】角田 直行
(72)【発明者】
【氏名】小林 隼人
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開2008-204032(JP,A)
【文献】特開2017-063228(JP,A)
【文献】特開2016-146618(JP,A)
【文献】特開2013-178736(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/38
G06F 11/07
(57)【特許請求の範囲】
【請求項1】
アナログ回路を含む論理回路の組み合わせを変更することで所定の処理を実行可能なFPGA(Field-Programmable Gate Array)である第1演算部と、所定の命令セットを実行可能なプロセッサである第2演算部とを有する演算装置であって、
前記第1演算部は、前記論理回路を組み合わせることで、
前記第2演算部が実行する処理を監視する監視処理と、
前記第2演算部が実行する処理が
通常の処理として予め定められた処理とは異なる場合は、
異常な処理が実行されているものとして前記第2演算部による実行中の
当該処理の実行を中断させる中断処理と
を実行することを特徴とする演算装置。
【請求項2】
前記第1演算部は、前記論理回路を組み合わせることで、
前記第2演算部が実行する処理が所定の条件を満たした場合は、前記監視処理と前記中断処理とを実行するための論理回路の組み合わせを変更する変更処理
を実行することを特徴とする請求項1に記載の演算装置。
【請求項3】
前記変更処理は、前記第2演算部が実行する処理が所定の条件を満たす度に、前記論理回路の組み合わせを変更する
ことを特徴とする請求項2に記載の演算装置。
【請求項4】
アナログ回路を含む論理回路の組み合わせを変更することで所定の処理を実行可能なFPGA(Field-Programmable Gate Array)である第1演算部と、所定の命令セットを実行可能なプロセッサである第2演算部とを有する演算装置が、前記第1演算部が有する前記論理回路を組み合わせることで実行する中断方法であって、
前記第2演算部が実行する処理を監視する監視工程と、
前記第2演算部が実行する処理が
通常の処理として予め定められた処理とは異なる場合は、
異常な処理が実行されているものとして前記第2演算部による実行中の
当該処理の実行を中断させる中断工程と
を含むことを特徴とする中断方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算装置および中断方法に関する。
【背景技術】
【0002】
従来、演算装置による異常な処理を防ぐための対策が実施されている。このような技術の一例として、マイクロプロセッサが異常な分岐命令を実行した場合は、分岐命令後の数値データの読み込みを禁止することで、暴走を防ぐ技術が知られている。
【先行技術文献】
【特許文献】
【0003】
【非特許文献】
【0004】
【文献】“FPGAのしくみと開発に使うソフトとハード”,丹下 昌彦<インターネット>http://toragi.cqpub.co.jp/Portals/0/backnumber/2009/03/p096-097.pdf(平成30年5月1日検索)
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上述した技術では、異常な処理を適切に防ぐことができない場合がある。
【0006】
例えば、上述した技術では、デジタル回路を用いてマイクプロセッサの動作を監視する。しかしながら、このようなデジタル回路がウイルスやハッカーにより操作された場合、適切にマイクロプロセッサの動作を監視することができなくなる。
【0007】
本願は、上記に鑑みてなされたものであって、演算装置による異常な処理の防止をより適切に行うことを目的とする。
【課題を解決するための手段】
【0008】
本願に係る演算装置は、アナログ回路を含む論理回路の組み合わせを変更することで所定の処理を実行可能な第1演算部と、所定の命令セットを実行可能な第2演算部とを有する演算装置であって、前記第1演算部は、前記論理回路を組み合わせることで、前記第2演算部が実行する処理を監視する監視処理と、前記第2演算部が実行する処理が所定の条件を満たした場合は、前記第2演算部による処理の実行を中断させる中断処理とを実行することを特徴とする。
【発明の効果】
【0009】
実施形態の一態様によれば、演算装置による異常な処理の防止をより適切に行うことができる。
【図面の簡単な説明】
【0010】
【
図1】
図1は、実施形態に係る演算装置の一例を示す図である。
【
図2】
図2は、実施形態に係る演算装置の構成例を示す図である。
【
図3】
図3は、実施形態に係る処理の流れの一例を説明するフローチャートである。
【発明を実施するための形態】
【0011】
以下に、本願に係る演算装置および中断方法を実施するための形態(以下、「実施形態」と記載する。)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る演算装置および中断方法が限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【0012】
〔1-1.演算装置の一例〕
まず、
図1を用いて、演算装置の一例について説明する。
図1は、実施形態に係る演算装置の一例を示す図である。
【0013】
演算装置100は、以下に説明する演算処理を実行する演算装置である。ここで、演算装置100は、製造後に利用者が内部の論理回路を定義あるいは変更することができる集積回路であり、所謂PLD(Programmable Logic Device)である。
【0014】
例えば、演算装置100は、所定の命令セットを実行可能なプロセッサ110と、FPGA(Field-Programmable Gate Array)150とを有する。プロセッサ110は、演算装置100が有するプロセッサであり、例えば、ARMアーキテクチャやPOWERアーキテクチャを採用したプロセッサ若しくはマイクロプロセッサである。すなわち、プロセッサ110は、デジタル回路により構成される。そして、プロセッサ110は、FPGAと連携することで、各種の演算処理を実行する。
【0015】
例えば、プロセッサ110は、プロセッサコア111とキャッシュメモリ112とを有する。プロセッサコア111は、論理演算や四則演算を実現する所謂コアであり、ALU(Arithmetic Logic Unit)から構成される算術論理演算装置により実現される。キャッシュメモリ112は、プロセッサ110が有する補助記憶装置である。より具体的には、キャッシュメモリ112は、演算装置100がアクセス可能な主記憶装置200(例えば、
図2参照)よりもプロセッサコア111が高速にアクセスすることができる記憶装置であり、所謂キャッシュメモリである。
【0016】
FPGA150は、外部装置OAからの指示に従って、回路構成を変更可能な演算装置である。例えば、FPGAは、アナログ回路要素を含む。例えば、FPGAには、プログラム可能な論理コンポ―ネットである複数の論理ブロックであって、アナログ回路により構成される論理ブロック、もしくは、アナログ回路とデジタル回路とを組み合わせた論理ブロックを有し、論理ブロック間が再構成可能な配線により相互接続されている。そして、FPGA150は、外部装置OAから受付けたハードウェア記述言語(HDL:Hardware Description Language)により、このような配線の接続を変更することで、各種の処理をハードウェアにより実現することができる。
【0017】
すなわち、演算装置100は、アナログ回路を含む論理回路の組み合わせを変更することで所定の処理を実行可能な第1演算部であるFPGA150と、所定の命令セットを実行可能な第2演算部であるプロセッサ110とを有する。
【0018】
〔1-2.中断処理の一例〕
ここで、従来のプロセッサとFPGAとを含む演算装置においては、デジタル回路により構成されるプロセッサ側がアナログ回路により構成されるFPGA側の制御を実行していた。しかしながら、制御側をデジタル回路により構成した場合、ハッキングやウイルスの影響を受けやすくなる。この結果、プロセッサ側がFPGA側の制御を実行した場合、FPGA側の処理の暴走を防ぐことができなくなる結果、演算装置100による処理の暴走を許してしまう恐れがある。
【0019】
そこで、演算装置100は、アナログ回路により構成されるFPGA150により、デジタル回路により構成されるプロセッサ110の制御を行う。より具体的には、FPGA150は、外部装置OAから受付けたHDLに従って回路を構成することで、プロセッサ110が実行する処理を監視する監視処理と、プロセッサ110が実行する処理が所定の条件を満たした場合は、プロセッサ110による処理の実行を中断させる中断処理とを実行する。例えば、FPGA150は、プロセッサ110による処理の実行をモニタリングする。そして、FPGA150は、プロセッサ110により実行される処理の内容が通常の処理とは異なる場合、プロセッサ110による処理の実行を中断させる。
【0020】
また、FPGA150は、論理回路を組み合わせることで、プロセッサ110が実行する処理が所定の条件を満たした場合は、監視処理と中断処理とを実行するための論理回路の組み合わせを変更する変更処理を実行する。例えば、FPGA150は、プロセッサ110が実行する処理が所定の条件を満たす度に、論理回路の組み合わせを変更する。すなわち、FPGA150は、プロセッサ110により実行させる処理の内容が通常の処理とは異なる場合は、プロセッサ110が実行する処理を中断させ、ワンタイムパスワード的にFPGA150の回路構成を変更する。
【0021】
このように、演算装置100は、アナログ回路により構成されるFPGA150により、デジタル回路により構成されるプロセッサ110の制御を行う。ここで、アナログ回路は、デジタル回路と比較して、ハッキングやウイルスによる影響を受け辛い。この結果、演算装置100は、異常な処理の実行をより適切に防ぐことができる。
【0022】
〔1-3.処理の流れの一例〕
以下、
図1を用いて、演算装置100が実行する処理の一例を説明する。まず、演算装置100は、外部装置OAから所定内容を受付ける(ステップS1)。このような場合、FPGA150は、以下の処理を実行するように論理回路の組み合わせを構成する。まず、FPGA150は、プロセッサ110に実行させる処理を構成する(ステップS2)。そして、FPGA150は、プロセッサ110に処理を実行させる(ステップS3)。このような場合、プロセッサ110は、FPGA150から受付けた処理を実行する(ステップS4)。
【0023】
ここで、FPGA150は、所定の時間間隔で、プロセッサ110による処理の状態を監視する(ステップS5)。そして、FPGA150は、プロセッサ110が想定した処理とは異なる処理を実行しているか否かを判定する(ステップS6)。例えば、FPGA150は、通常の処理として予め定められた処理とは異なる処理を実行しているか否かを判定する。そして、FPGA150は、プロセッサ110が想定した処理とは異なる処理を実行していると判定した場合は、プロセッサ110に対して、処理の中断命令を出力する(ステップS7)。例えば、FPGA150は、プロセッサ110に対して、処理の終了を指示する割り込み命令を出力することで、処理を中断させる。
【0024】
そして、FPGA150は、処理を中断させた場合は、回路構成を変更する(ステップS8)。すなわち、FPGA150は、プロセッサ110が異常な処理を実行した場合は、回路構成を変更することで、ハッキングやウイルスによる影響を最小限にとどめる。このような処理を実行することで、演算装置100は、異常な処理の防止をより適切に行うことができる。
【0025】
〔2.演算装置の構成〕
以下、上記した演算処理を実現する演算装置100が有する機能構成の一例について説明する。
図2は、実施形態に係る演算装置の構成例を示す図である。
【0026】
例えば、演算装置100は、プロセッサ110、入出力装置120、メモリコントローラ130、およびFPGA150を有する。また、プロセッサ110は、プロセッサコア111とキャッシュメモリ112とを有する。
【0027】
入出力装置120は、演算装置100と外部装置OAとの間の通信を中継する装置であり、所謂I/O(Input Output)装置である。例えば、入出力装置120は、USB(Universal Serial Bus)、イーサーネット、SD(Secure Digital)、UART(Universal Asynchronous Receiver/Transmitter)、SPI(Serial Peripheral Interface)、I2C、GPIO(General-purpose input/output)等、各種の通信規格に沿って外部装置OAとの間の通信を制御する各種の入出力装置により実現される。
【0028】
メモリコントローラ130は、演算装置100による主記憶装置200へのメモリアクセスを制御する。より具体的には、メモリコントローラ130は、ページング方式により主記憶装置200に格納されたデータの読み出しや書込みを行う。なお、主記憶装置200は、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子等の記憶装置によって実現される。
【0029】
FPGA150は、外部装置OAから受付けたHDLに従ってアナログ回路により構成される論理回路の組み合わせを変更することで、以下の機能を実現する。そして、FPGA150は、以下の機能を発揮することで、プロセッサ110による演算処理の制御を行う。
【0030】
例えば、FPGA150は、受付部151、変更部152とともに、制御ユニット160を構成するように、論理回路を組み合わせる。また、制御ユニット160には、演算制御部161、監視部162、および中断部163が含まれる。例えば、FPGA150は、外部装置OAから受付けたHDLに従い、受付部151、変更部152、演算制御部161、監視部162、および中断部163を構成するように、論理回路の組み合わせを行う。
【0031】
受付部151は、プロセッサ110に実行させる処理を受付ける。例えば、受付部151は、外部装置OAから、プロセッサ110に実行させる処理、すなわち、演算処理の内容を示す処理情報を受付ける。このような場合、受付部151は、受付けた処理情報を演算制御部161に引き渡す。
【0032】
変更部152は、第2演算部であるプロセッサ110が実行する処理が所定の条件を満たした場合は、監視処理と中断処理とを実行するための論理回路の組み合わせを変更する変更処理を実行する。また、変更部152は、第2演算部であるプロセッサ110が実行する処理が所定の条件を満たす度に、論理回路の組み合わせを変更する。
【0033】
例えば、変更部152は、中断部163によりプロセッサ110による処理の実行が中断された場合は、制御ユニット160を構成する論理回路の組み合わせを解除する。より具体的には、変更部152は、制御ユニット160を構成する論理回路間の接続を解除する。そして、変更部152は、制御ユニット160を構成する論理回路の組み合わせであって、前回とは異なる組み合わせを構成するように、論理回路間の接続を設定する。なお、変更部152は、このような新たな接続をプロセッサ110に特定させてもよく、外部装置OAに特定させてもよい。
【0034】
演算制御部161は、プロセッサ110に所定の演算処理を実行させる。例えば、演算制御部161は、受付部151から実行対象となる演算処理の内容を示す処理情報を受付けた場合、処理情報が示す演算処理をプロセッサ110に実行させる。
【0035】
監視部162は、第2演算部であるプロセッサ110が実行する処理を監視する。例えば、監視部162は、所定の時間間隔で、プロセッサコア111が有するレジスタのうち所定のレジスタに格納されている値や、キャッシュメモリ112に登録されている情報を収集する。なお、監視部162による監視対象は、演算制御部161がプロセッサ110に実行させる演算処理の内容に応じて適宜変更されてもよい。例えば、演算制御部161は、処理情報が示す処理の内容に基づいて、監視対象となるレジスタのアドレスや、キャッシュメモリ112に保持されるデータのアドレス(所謂仮想アドレス)を設定する。そして、監視部162は、演算制御部161により設定されたアドレスのレジスタを監視対象としてもよく、キャッシュメモリ112に登録されたデータのうち、演算制御部161により設定されたアドレスのデータを監視対象としてもよい。
【0036】
中断部163は、第2演算部であるプロセッサ110が実行する処理が所定の条件を満たした場合は、プロセッサ110による処理の実行を中断させる。例えば、中断部163は、監視部162が監視対象とするレジスタに登録されたデータや、キャッシュメモリ112に保持されたデータを取得する。そして、中断部163は、取得したデータが所定の条件を満たすか否かを判定する。すなわち、中断部163は、取得したデータが所定の条件を満たすか否かを判定することで、プロセッサ110が想定された処理とは異なる処理を実行しているか否かを判定する。例えば、中断部163は、定期的に取得されたデータの変遷が所定の条件を満たすか否かを判定する。
【0037】
そして、中断部163は、取得したデータが所定の条件を満たす場合は、プロセッサ110による処理の実行を中断させる。例えば、中断部163は、プロセッサ110に対して処理を中断させる割り込み命令を出力する。この結果、プロセッサ110は、想定していない処理、すなわち、異常な処理の実行を中断することができる。
【0038】
なお、中断部163が判定に用いる条件は、プロセッサ110に実行させる処理の内容に応じて任意の条件が設定可能である。例えば、演算制御部161は、処理情報が示す処理の内容に基づいて、監視対象となるレジスタに登録されるデータの変化や、キャッシュメモリ112に保持されるデータの変化に関する情報を条件として設定する。そして、中断部163は、監視対象となるデータが演算制御部161により設定された条件を満たすか否かを判定してもよい。
【0039】
より具体的な例を挙げると、演算制御部161は、第1のアドレスで示されるレジスタに保持されるデータが変化し、第2のアドレスで示されるレジスタに保持されるデータが変化しない旨を条件として設定する。このような場合、監視部162は、第1のアドレスで示されるレジスタに保持されるデータと、第2のアドレスで示されるレジスタに保持されるデータとを所定の時間間隔で取得する。また、中断部163は、監視部162が所定の時間間隔で取得したデータを参照し、第1のアドレスで示されるレジスタに保持されるデータが変化し、第2のアドレスで示されるレジスタに保持されるデータが変化していないか否かを判定する。そして、中断部163は、第1のアドレスで示されるレジスタに保持されるデータが変化していない場合や、第2のアドレスで示されるレジスタに保持されるデータが変化した場合は、異常な処理が実行されているものとして、プロセッサ110による処理を中断させてもよい。
【0040】
〔3.演算装置が実行する処理の流れの一例〕
次に、
図3を用いて、FPGA150が実行する処理の流れの一例について説明する。
図3は、実施形態に係る処理の流れの一例を説明するフローチャートである。
【0041】
まず、FPGA150は、外部装置OAから処理内容を受付ける(ステップS101)。このような場合、FPGA150は、プロセッサ110に実行させる処理を構成し(ステップS102)、プロセッサ110に処理を実行させる(ステップS103)。ここで、FPGA150は、想定外の処理が実行されているか否かを判定し(ステップS104)、想定外の処理が実行されている場合は(ステップS104:Yes)、プロセッサ110の処理を停止させる(ステップS105)。続いて、FPGA150は、制御ユニット160の回路構成を変更し(ステップS106)、処理を終了する。
【0042】
一方、FPGA150は、想定外の処理が実行されていない場合は(ステップ104:No)、プロセッサ110による処理が完了したか否かを判定し(ステップS107)、処理が完了した場合は(ステップS107:Yes)、処理結果を出力する(ステップS108)。その後。FPGA150は、ステップS106を実行する。一方、FPGA150は、処理が完了していない場合は(ステップS107:No)、ステップS103を実行する。
【0043】
〔4.その他〕
上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文章中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【0044】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0045】
また、上記してきた各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【0046】
〔5.効果〕
上述したように、演算装置100は、アナログ回路を含む論理回路の組み合わせを変更することで所定の処理を実行可能な第1演算部(例えば、FPGA150)と、所定の命令セットを実行可能な第2演算部(例えば、プロセッサ110)とを有する演算装置100であって、第1演算部は、論理回路を組み合わせることで、第2演算部が実行する処理を監視する監視処理と、第2演算部が実行する処理が所定の条件を満たした場合は、第2演算部による処理の実行を中断させる。
【0047】
また、演算装置100が有する第1演算部は、論理回路を組み合わせることで、第2演算部が実行する処理が所定の条件を満たした場合は、監視処理と中断処理とを実行するための論理回路の組み合わせを変更する。例えば、第1演算部は、第2演算部が実行する処理が所定の条件を満たす度に、論理回路の組み合わせを変更する。
【0048】
これらの処理の結果、演算装置100は、例えば、ハッキングやウイルスによる影響が少ないアナログ回路により、プロセッサ110による演算処理を制御することができるので、異常な処理の防止をより適切に行うことができる。
【0049】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【0050】
また、上記してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、生成部は、生成手段や生成回路に読み替えることができる。
【符号の説明】
【0051】
100 演算装置
110 プロセッサ
111 プロセッサコア
112 キャッシュメモリ
120 入出力装置
130 メモリコントローラ
150 FPGA
151 受付部
152 変更部
160 制御ユニット
161 演算制御部
162 監視部
163 中断部
200 主記憶装置
OA 外部装置