(57)【要約】  プログラム可能論理回路を搭載したネットワークインタフェースカード(ＮＩＣ)の回路情報の書き換えに伴うシステムの可用性への影響を低減する。ＮＩＣは、記録された回路情報に従って、入力されたパケットの処理を行うプログラム可能論理回路と、前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第１のモードと、前記プログラム可能論理回路を経由せずにバイパスする第２のモードとを切り替え可能な１対のスイッチと、前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記１対のスイッチを第２のモードに切り替えるスイッチ制御回路と、を備える。
2020122024.tif 000002
【特許請求の範囲】
【請求項１】
記録された回路情報に従って、入力されたパケットの処理を行うプログラム可能論理回路と、
前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第１のモードと、前記プログラム可能論理回路を経由せずにバイパスする第２のモードとを切り替え可能な１対のスイッチと、
前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、
前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記１対のスイッチを第２のモードに切り替えるスイッチ制御回路と、を備え、
前記回路情報の書き換え時に、前記プログラム可能論理回路に代わって、前記コンピュータによりパケットの処理を実行可能に構成されているネットワークインタフェースカード。
【請求項２】
前記１対のスイッチは、
前記第２のモードにおいて、前記プログラム可能論理回路に、前記コンピュータ側とのメモリ同期用のパケットを送るよう動作する請求項１のネットワークインタフェースカード。
【請求項３】
前記１対のスイッチが、前記プログラム可能論理回路内部の可変領域の入力端と、出力端にそれぞれ配置されている請求項１又は２のネットワークインタフェースカード。  
【請求項４】
さらに、前記アプリケーションプログラム側から、プログラム可能論理回路が一時的に情報を記憶するために用いるメモリへのアクセスを許容するメモリ制御部を備える請求項１のネットワークインタフェースカード。
【請求項５】
前記プログラム可能論理回路は、前記メモリ制御部から前記メモリの情報を引き継ぐことで、前記回路情報の書き換え後、前記コンピュータで実施させていた処理を引き継ぎ可能に構成されている請求項４のネットワークインタフェースカード。
【請求項６】
記録された回路情報に従って入力されたパケットの処理を行うプログラム可能論理回路と、
前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第１のモードと、前記プログラム可能論理回路を経由せずにバイパスする第２のモードとを切り替え可能な１対のスイッチと、
接続されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、
前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記１対のスイッチを第２のモードに切り替えるスイッチ制御回路と、を備え、
前記回路情報の書き換え時に、前記プログラム可能論理回路に代わって、前記コンピュータによりパケットの処理を実行可能に構成されているネットワークインタフェースカードを搭載したコンピュータ。
【請求項７】
前記第２のモードにおいて、前記プログラム可能論理回路に、メモリ同期用のパケットを送るよう動作する請求項６のコンピュータ。
【請求項８】
記録された回路情報に従って入力されたパケットの処理を行うプログラム可能論理回路と、
前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第１のモードと、前記プログラム可能論理回路を経由せずにバイパスする第２のモードとを切り替え可能な１対のスイッチと、
前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、
前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記１対のスイッチを第２のモードに切り替えるスイッチ制御回路と、を備えたネットワークインタフェースカードの前記回路情報の書き換え方法であって、
前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを起動し、
前記１対のスイッチを、前記第１のモードから前記第２のモードに切り替え、
前記回路情報を書き換えた後に、前記１対のスイッチを、前記第２のモードから前記第１のモードに切り替える、
回路情報の書き換え方法。
【請求項９】
記録された回路情報に従って入力されたパケットの処理を行うプログラム可能論理回路と、
前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第１のモードと、前記プログラム可能論理回路を経由せずにバイパスする第２のモードとを切り替え可能な１対のスイッチと、
前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、
前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記１対のスイッチを第２のモードに切り替えるスイッチ制御回路と、を備えたネットワークインタフェースカードの前記回路情報の書き換えプログラムであって、
前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを起動する処理と、
前記１対のスイッチを、前記第１のモードから前記第２のモードに切り替える処理と、
前記回路情報を書き換えた後に、前記１対のスイッチを、前記第２のモードから前記第１のモードに切り替える処理と、
を前記コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１８−２３１０９８号（２０１８年１２月１０日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、ネットワークインタフェースカード、コンピュータ、回路情報の書き換え方法及びプログラムに関する。
【背景技術】
【０００２】
大規模なデータセンターやＶＮＦ（Ｖｉｒｔｕａｌ  Ｎｅｔｗｏｒｋ  Ｆｕｎｃｔｉｏn）をはじめとした通信事業者の運用設備においてはソフトウェアの仮想化が進み、一台の汎用サーバに複数のシステムを集約した構成が一般的になっている。その一方で、この種の構成では、ソフトウェアで実現していた通信機能については性能不足が指摘されている。  【０００３】
こうした事情から、ネットワークインタフェースカード（以下、ＮＩＣ）にＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を載せたＳｍａｒｔ  ＮＩＣ（ＳＮＩＣ）と呼ばれる製品が登場している。このＳＮＩＣは、ＣＰＵで実施していたパケットのヘッダやペイロード等の変更、転送といった、いわゆるパケット処理のうち、ソフトウェア処理では性能が出せないような一部モジュールをＳＮＩＣ内のＦＰＧＡ回路として実装している。これにより、ソフトウェアボトルネックが解消されて、性能向上を期待できると言われている。【０００４】
特許文献１〜４には、ＦＰＧＡを搭載した通信機器等において通信やサービスを中断せずにＦＰＧＡの回路情報の書き換えを行う方法が開示されている。また、特許文献５〜６には、サービスを中断せずにファームウェアや制御プログラムの書き換えを行う方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１７−６９７７７号公報
【特許文献２】国際公開第２０１７／１７０３１１号
【特許文献３】特開２０１５−１７６３４３号公報
【特許文献４】特開２００８−１７７９００号公報
【特許文献５】特開２０１０−７９８３７号公報
【特許文献６】特開２００７−２０２０６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
以下の分析は、本発明によって与えられたものである。上記したＳＮＩＣに代表される機器では、大きな性能改善が見込める一方、ＦＰＧＡの回路情報の更新が発生しうる。回路情報の更新中は、ＦＰＧＡの再起動と回路情報の読み出しが必須となるため、その間、処理ができなくなるという問題点がある。この点、特許文献１では、ＦＰＧＡ内部の可変領域に複数の通信処理回路を構成し、いずれか一方を切り替えて動作させるとともに、他方の回路構成を更新できる構成が開示されている。【０００７】
しかしながら、特許文献１の構成では、可変領域に２つの通信処理回路を配置することになり、回路サイズの制約が生じたり、装置自体が高価になってしまうという問題点がある。この点は、特許文献３、５、６も同様である。【０００８】
その他、特許文献２は、ＣＰＵにＦＰＧＡを結合した構成において、ＦＰＧＡプログラムをバージョンアップしている間、ＣＰＵにてＦＰＧＡで行っていたＶＭのデータ処理を代行する構成を開示するに止まっている。また、ＳＮＩＣへの適用を考えた場合、ＦＰＧＡの処理を代行しうる要素を持っていないので特許文献２の方法は採用し得ない。また、特許文献４の方法は、ＦＰＧＡのアップグレード中にルータからのデータ送信を一時的に停止させるものであり、狭義の意味でユーザに対するサービスを停止させないものとは言いえない。【０００９】
本発明は、ＦＰＧＡに代表されるプログラム可能論理回路を搭載したネットワークインタフェースカードにおいて、その回路情報の書き換えに伴うシステムの可用性への影響の低減に貢献できるネットワークインタフェースカード、コンピュータ、回路情報の書き換え方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
第１の視点によれば、記録された回路情報に従って入力されたパケットの処理を行うプログラム可能論理回路と、前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第１のモードと、前記プログラム可能論理回路を経由せずにバイパスする第２のモードとを切り替え可能な１対のスイッチと、前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記１対のスイッチを第２のモードに切り替えるスイッチ制御回路と、を備え、前記回路情報の書き換え時に、前記プログラム可能論理回路に代わって、前記コンピュータによりパケットの処理を実行可能に構成されているネットワークインタフェースカードが提供される。【００１１】
第２の視点によれば、上記したネットワークインタフェースカードを搭載したコンピュータが提供される。【００１２】
第３の視点によれば、記録された回路情報に従って入力されたパケットの処理を行うプログラム可能論理回路と、前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第１のモードと、前記プログラム可能論理回路を経由せずにバイパスする第２のモードとを切り替え可能な１対のスイッチと、前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記１対のスイッチを第２のモードに切り替えるスイッチ制御回路と、を備えたネットワークインタフェースカードの前記回路情報の書き換え方法であって、前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを起動し、前記１対のスイッチを、前記第１のモードから前記第２のモードに切り替え、前記回路情報を書き換えた後に、前記１対のスイッチを、前記第２のモードから前記第１のモードに切り替える、回路情報の書き換え方法が提供される。本方法は、ネットワークインタフェースカードを搭載したコンピュータという、特定の機械に結びつけられている。【００１３】
第４の視点によれば、記録された回路情報に従って入力されたパケットの処理を行うプログラム可能論理回路と、前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第１のモードと、前記プログラム可能論理回路を経由せずにバイパスする第２のモードとを切り替え可能な１対のスイッチと、前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記１対のスイッチを第２のモードに切り替えるスイッチ制御回路と、を備えたネットワークインタフェースカードの前記回路情報の書き換えプログラムであって、前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを起動する処理と、前記１対のスイッチを、前記第１のモードから前記第２のモードに切り替える処理と、前記回路情報を書き換えた後に、前記１対のスイッチを、前記第２のモードから前記第１のモードに切り替える処理と、を前記コンピュータに実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な（非トランジトリーな）記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１４】
本発明によれば、プログラム可能論理回路を搭載したネットワークインタフェースカードにおいて、その回路情報の書き換えに伴うシステムの可用性への影響を低減することが可能となる。即ち、本発明は、背景技術に示したネットワークインタフェースカードを、回路情報の書き換えに伴い可用性が損なわれる可能性の少ないものへと変換するものとなっている。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態の構成を示す図である。
【図２】本発明の一実施形態の動作を説明するための図である。
【図３】本発明の一実施形態の動作を説明するための図である。
【図４】本発明の第１の実施形態の構成を示す図である。
【図５】本発明の第１の実施形態の動作を表したフローチャートである。
【図６】本発明の第１の実施形態のＦＰＧＡの更新処理の詳細を表したフローチャートである。
【図７】本発明の第２の実施形態の構成を示す図である。
【図８】本発明の第２の実施形態の動作を表したフローチャートである。
【図９】本発明の第３の実施形態の構成を示す図である。
【図１０】本発明のネットワークインタフェースカードを搭載コンピュータの構成を示す図である。
【発明を実施するための形態】
【００１６】
はじめに本発明の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。また、以降の説明で参照する図面等のブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号（データ）の流れを模式的に示すものであり、双方向性を排除するものではない。また、図中の各ブロックの入出力の接続点には、ポート乃至インタフェースがあるが図示省略する。プログラムはコンピュータ装置を介して実行され、コンピュータ装置は、例えば、プロセッサ、記憶装置、入力装置、通信インタフェース、及び必要に応じ表示装置を備える。また、コンピュータ装置は、通信インタフェースを介して装置内又は外部の機器（コンピュータを含む）と、有線、無線を問わず、交信可能に構成される。また、以下の説明において、「Ａ及び／又はＢ」は、Ａ及びＢの少なくともいずれかという意味で用いる。
【００１７】
本発明は、その一実施形態において、図１に示すように、プログラム可能論理回路１１と、１対のスイッチ１２、１３と、コンピュータ側インタフェース（ＩＦ）１４と、スイッチ制御回路１５と、を備えるネットワークインタフェースカード１０にて実現できる。
【００１８】
より具体的には、プログラム可能論理回路１１は、記録された回路情報に従って入力されたパケットの処理を行う。スイッチ１２、１３は、それぞれ前記プログラム可能論理回路１１の入力端と、出力端にそれぞれ配置される。そして、このスイッチ１２、１３はプログラム可能論理回路１１にパケットを送る第１のモードと、前記プログラム可能論理回路１１を経由せずにバイパスする第２のモードとを切り替え可能に構成される。コンピュータ２０は、プログラム可能論理回路１１に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されている。そして、コンピュータ側インタフェース（ＩＦ）１４は、コンピュータ２０に、パケットを送信可能となっている。スイッチ制御回路１５は、プログラム可能論理回路１１の前記回路情報の書き換えの際に、１対のスイッチ１２、１３を第２のモードに切替可能となっている。上記構成において、ネットワークインタフェースカード１０は、前記回路情報の書き換え時に、前記プログラム可能論理回路１１に代わって、前記コンピュータによりパケットの処理を実行する。
【００１９】
例えば、通常の動作時、図２に示すように、１対のスイッチ１２、１３は、プログラム可能論理回路１１にパケットを送る第１のモードに設定されている。これにより、上述したＳＮＩＣと同様に、ソフトウェアボトルネックが解消し、性能向上を見込むことができるようになっている。
【００２０】
一方、プログラム可能論理回路１１の前記回路情報の書き換えの際、１対のスイッチ１２、１３は、図３に示すように、第２のモードに切り替えられる。そして、プログラム可能論理回路１１の前記回路情報の書き換えの間、前記プログラム可能論理回路１１に代わって、前記コンピュータによりパケットを処理させる。従って、ユーザに対するサービスを停止させずに、プログラム可能論理回路１１の回路情報の書き換えを実施することが可能となっている。
【００２１】
［第１の実施形態］
続いて、本発明の第１の実施形態について図面を参照して詳細に説明する。図４は、本発明の第１の実施形態の構成を示す図である。図４を参照すると、ＳＮＩＣ１００を搭載したＩＡサーバ２００と、そのＩＡサーバ２００上で動作するプログラム群（ＡＰＬ／ＯＳ）２１０の詳細構成が示されている。なお、ＩＡサーバ２００は、Ｉｎｔｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅサーバの略である。また、ＡＰＬ／ＯＳは、それぞれ、Ａｐｐｌｉｃａｔｉｏｎ、Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍの略である。
【００２２】
図４のＡＰＰ２０１は、ＳＮＩＣ１００を用いてネットワーク側と授受するパケットを処理するパケット処理プログラム本体を示す。ＡＰＰ２０１は、ＮＩＣ  Ｄｒｉｖｅｒ２０３を使用してＳＮＩＣ１００でパケット受送信を行う。また、ＡＰＰ２０１は、ＦＰＧＡ  Ｄｒｉｖｅｒ２０４経由で、ＦＰＧＡ１１１の回路情報を制御し、また管理可能となっている。
【００２３】
ＡＰＰ２０１は、ＦＰＧＡ  Ｄｒｉｖｅｒ２０４経由で、Ｓ−ＳＷ１１２、Ｎ−ＳＷ１１３に対し、動作モードの切り替えや、例外パケット（後述）を特定するためのルールを指示する。また、ＡＰＰ２０１は、Ａｌｔ−ＳＩＭ２０２の起動、停止を管理する。具体的には、ＡＰＰ２０１は、ＦＰＧＡ１１１の更新開始前に、Ａｌｔ−ＳＩＭ２０２を起動し、ＦＰＧＡ１１１に代わって、Ａｌｔ−ＳＩＭ２０２を使用して一連のパケット処理を実行できるように制御する。また、ＡＰＰ２０１は、ＦＰＧＡ１１１の起動通知を受けて、Ａｌｔ−ＳＩＭ２０２が不要になればＡｌｔ−ＳＩＭ２０２を停止する。
【００２４】
また、ＡＰＰ２０１は、Ａｌｔ−ＳＩＭ２０２とＦＰＧＡ１１１間で、ＦＰＧＡ１１１のパケットカウント情報等のメモリ内容を同期するメモリ同期を補助する機能を担う。このメモリ同期は、例えば、ＯＳ上にＦＰＧＡ１１１との同期用メモリ空間を用意しておき、ＦＰＧＡ１１１内のｍｏｄｕｌｅｓ１２０（後述）との定期的なパケット授受により、ＤＲＡＭ１１８の情報を同期する方法を採ることができる。また、ＡＰＰ２０１は、ＦＰＧＡ１１１の更新開始前に、メモリ同期を完了させるべく、Ａｌｔ−ＳＩＭ２０２へ、前記ＯＳ内に用意した同期済みのメモリ領域（空間）を渡す機能を具備する。また、ＡＰＰ２０１は、ＦＰＧＡ１１１へ処理を切り替える前に、Ａｌｔ−ＳＩＭ２０２とＦＰＧＡ１１１間のメモリ同期を行う。このときのｍｏｄｕｌｅｓ１２０（後述）とのメモリ同期用のパケットを例外パケットという。例外パケットの具体例については後に詳述する。
【００２５】
ＮＩＣ  Ｄｒｉｖｅｒ２０３は、ＳＮＩＣ１００のパケット送受信を制御するドライバである。
【００２６】
ＦＰＧＡ  Ｄｒｉｖｅｒ２０４は、ＳＮＩＣ１００内のＦＰＧＡ１１１を制御するためのドライバである。ＦＰＧＡの回路情報の更新等は、このドライバを使って実行することができる。また、ＦＰＧＡ  Ｄｒｉｖｅｒ２０４は、ＦＰＧＡ１１１の起動完了等をＡＰＰ２０１に通知する。
【００２７】
ＣＰＵ／ＲＡＭ２０５は、ＩＡサーバ２００に代表されるコンピュータを構成する一般的な物理部品群を示している（図１０参照）。なお、ＣＰＵは、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略であり、ＲＡＭは、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの略である。
【００２８】
続いて、ＳＮＩＣ１００の構成について説明する。図４を参照すると、ＦＰＧＡ１１１と、Ｓ−ＳＷ１１２と、Ｎ−ＳＷ１１３と、Ｅｔｈｅｒ  Ｎｅｔｗｏｒｋ  Ｃｏｎｔｒｏｌｌｅｒ１１４と、ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５と、ＱＳＦＰ１１７、ＦＬＡＳＨ１１９とを備えた構成が示されている。
【００２９】
ＦＰＧＡ１１１は、任意の回路情報に書き換え可能な領域（Ｗｒｉｔａｂｌｅ  ＦＰＧＡ）１１６と、恒久的な回路とで構成されて、回路情報によって定義された処理ロジックに従って入力されたパケットを処理する。また、ＦＰＧＡは、起動時に、ＦＬＡＳＨ１１９から回路情報をロードして、書き換え可能領域（Ｗｒｉｔａｂｌｅ  ＦＰＧＡ）１１６に回路情報を書き込む。図４において、この回路情報はｍｏｄｕｌｅｓ１２０として示されている。ＦＰＧＡ１１１は、ＦＬＡＳＨ１１９、ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５、ＤＲＡＭ１１８との専用インタフェースを持っている。図４において、これらはそれぞれＦＬＡＳＨ−ＩＦ、ＰＣＩＥ−ＩＦ、ＲＡＭ−ＩＦで示されている。
【００３０】
Ｅｔｈｅｒ  Ｎｅｔｗｏｒｋ  Ｃｏｎｔｒｏｌｌｅｒ１１４は、ＳＮＩＣ１００内の低レイヤのネットワーク処理を行う専用ハードウェアチップである。Ｅｔｈｅｒ  Ｎｅｔｗｏｒｋ  Ｃｏｎｔｒｏｌｌｅｒ１１４が、上記したＯＳや各種ドライバとのインタフェースを提供する。従って、Ｅｔｈｅｒ  Ｎｅｔｗｏｒｋ  Ｃｏｎｔｒｏｌｌｅｒ１１４が、上記したコンピュータ側インタフェース（ＩＦ）１４としての機能を担うことになる。
【００３１】
ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５は、ＦＰＧＡ１１１を制御するためのハードウェアモジュールである。具体的には、ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５は、ＦＰＧＡ  Ｄｒｉｖｅｒからの制御に従い、ＦＰＧＡ１１１に対し、ＦＰＧＡ１１１の再起動やその回路情報の更新を命令する。また、ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５は、ＦＰＧＡ  Ｄｒｉｖｅｒ経由でＡＰＰ２０１側に、ＦＰＧＡ１１１の状態を通知する。また、ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５は、ＡＰＰ２０１からの指示に従い、Ｓ−ＳＷ１１２、Ｎ−ＳＷ１１３を切り替えるスイッチ制御回路（スイッチ制御回路１５参照）としても機能する。
【００３２】
ＦＬＡＳＨ１１９は、不揮発性のフラッシュメモリで構成され、ＦＰＧＡ１１１の回路情報を保持する。ＦＬＡＳＨ１１９の書き換えは、外部記憶媒体等から、ＣＰＵ上のＯＳもしくはＮＩＣ  Ｄｒｉｖｅｒ２０３を経由してＦＬＡＳＨ１１９に書き出すことで実施できる。
【００３３】
ＤＲＡＭ１１８は、ＳＮＩＣ１００内に具備されているＤｙｎａｍｉｃＲＡＭである。ＤＲＡＭ１１８は、一般的に揮発性であり、ＦＰＧＡ１１１内のｍｏｄｕｌｅｓ１２０が処理の一時的な情報を記憶するために使用される。
【００３４】
ｍｏｄｕｌｅｓ１２０は、ＦＰＧＡ１１１の書き変え可能領域（Ｗｒｉｔａｂｌｅ  ＦＰＧＡ）１１６に書き込まれた処理ロジックである。このｍｏｄｕｌｅｓ１２０は、ＡＰＰ２０１の処理の一部のオフロード先として機能することで、システム全体のソフトウェアボトルネックが解消される。さらに、ｍｏｄｕｌｅｓ１２０は、ＤＲＡＭの情報をパケット化して、ＡＰＰ２０１とのパケット授受により、ＡＰＰ２０１経由でＡｌｔ−ＳＩＭ２０２とメモリ同期する機構を持つ。
【００３５】
ＱＳＦＰ１１７は、ＳＮＩＣ１００のパケット入力用のインタフェースである。このＱＳＦＰ１１７は、ケーブルの結線ポイントになる。なお、ＱＳＦＰは、Ｑｕａｄ  Ｓｍａｌｌ  Ｆｏｒｍ−ｆａｃｔｏｒ  Ｐｌｕｇｇａｂｌｅの略であり、トランシーバの規格である。
【００３６】
続いて、上記したＦＰＧＡ１１１の回路情報の更新中に、パケット処理を継続させるための構成について説明する。
【００３７】
Ｓ−ＳＷ１１２は、ＳＮＩＣ１００のＱＳＦＰ１１７経由で外部から受信したパケット（上りパケット）をＦＰＧＡ１１１へ転送するか、もしくはＦＰＧＡ１１１を経由しないでＮ−ＳＷ１１３に転送するかを判断、実行するモジュールである。また、Ｓ−ＳＷ１１２は、ＱＳＦＰ１１７を介して、Ｎ−ＳＷ１１３もしくは、ＦＰＧＡ１１１から受信したパケット（下りパケット）をＳＮＩＣ外へ転送する機能を具備する。
【００３８】
Ｓ−ＳＷ１１２には、下記の２種類の動作モードがあり、ＡＰＰ２０１により、ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５経由で動作モードを切り替えられる。
【００３９】
Ａ）ＦＰＧＡ経由モード（第１のモードに相当）：
Ｓ−ＳＷ１１２は、上りパケットをＦＰＧＡ１１１へ転送する。
Ｂ）バイパスモード（第２のモードに相当）：
Ｓ−ＳＷ１１２は、上りパケットのうち例外パケット以外をすべてＮ−ＳＷ１１３へ転送し、例外パケットをＦＰＧＡ１１１へ転送する。ここで、例外パケットとは、ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５経由でＡＰＰ２０１より指示されたルールにマッチしたパケットを指す。例えば、例外パケットとして、特定のＶＬＡＮのＩＤ（ＶＩＤ）や、特定ＭＡＣアドレス等を持つパケットを指定することができ、該当するパケットをＦＰＧＡ１１１に送ることができる。本実施形態では、この例外パケットをメモリ同期に用いている。その詳細は後述する。
【００４０】
Ｎ−ＳＷ１１３は、Ｅｔｈｅｒ  Ｎｅｔｗｏｒｋ  Ｃｏｎｔｒｏｌｌｅｒ１１４から受信したパケット（下りパケット）をＦＰＧＡ１１１へ転送するか、もしくはＦＰＧＡ１１１を経由しないでＳ−ＳＷ１１２に転送するかを判断、実行するモジュールである。また、Ｎ−ＳＷ１１３は、ＳＮＩＣ１００のＦＰＧＡ１１１もしくはＳ−ＳＷ１１２から受信したパケット（上りパケット）を、Ｅｔｈｅｒ  Ｎｅｔｗｏｒｋ  Ｃｏｎｔｒｏｌｌｅｒ１１４へ転送する機能を具備する。
【００４１】
Ｎ−ＳＷ１１３には、下記の２種類の動作モードがあり、Ｓ−ＳＷ１１２と同様に、ＡＰＰ２０１により、ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５経由で動作モードを切り替えられる。
【００４２】
Ａ）ＦＰＧＡ経由モード（第１のモードに相当）：
Ｎ−ＳＷ１１３は、下りパケットをＦＰＧＡへ転送する。
Ｂ）バイパスモード（第２のモードに相当）：
Ｎ−ＳＷ１１３は、下りパケットのうち例外パケット以外をすべてＳ−ＳＷ１１２へ転送し、例外パケットをＦＰＧＡ１１１へ転送する。ここで、例外パケットとは、ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５経由でＡＰＰ２０１より指示されたルールにマッチしたパケットを指す。例えば、例外パケットとして、特定のＶＬＡＮのＩＤ（ＶＩＤ）や、特定ＭＡＣアドレス等を持つパケットを指定することができ、該当するパケットをＦＰＧＡ１１１に送ることができる。
【００４３】
Ａｌｔ−ＳＩＭ２０２は、ＦＰＧＡ１１１内のｍｏｄｕｌｅｓ１２０と同等の処理を行う代替モジュール（コンピュータプログラム）である。ＦＰＧＡ１１１内のｍｏｄｕｌｅｓ１２０が動作できないときに、切り替えて利用できる。ただし、Ａｌｔ−ＳＩＭ２０２の処理性能は、ＦＰＧＡ１１１のＡｌｔ−ＳＩＭ２０２より低いものであってもよい。
【００４４】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図５は、本発明の第１の実施形態の動作を表したフローチャートである。図５を参照すると、まず、ＡＰＰ２０１は、ＦＰＧＡ１１１の回路を更新するため、Ａｌｔ−ＳＩＭ２０２を起動する（ステップＳ００１）。
【００４５】
次に、ＡＰＰ２０１は、ＦＰＧＡ１１１とのメモリ同期を行う（ステップＳ００２）。このメモリ同期は、最後の同期からの差分を反映することで実施できる。
【００４６】
次に、ＡＰＰ２０１は、Ａｌｔ−ＳＩＭ２０２の起動を確認後、Ａｌｔ−ＳＩＭ２０２に、ＦＰＧＡ１１１との同期済のメモリ領域を渡す（ステップＳ００３）。以降、Ａｌｔ−ＳＩＭ２０２はｍｏｄｕｌｅｓ１２０と同等の処理を実行できる状態になる。
【００４７】
次に、ＡＰＰ２０１は、ＦＰＧＡ  Ｄｒｉｖｅｒ２０４経由でＮ−ＳＷ１１３及びＳ−ＳＷ１１２をバイパスモードに切り替える（ステップＳ００４）。このとき、メモリ同期用のパケットを通すために、ＡＰＰ２０１は、Ｎ−ＳＷ１１３及びＳ−ＳＷ１１２に対し、メモリ同期用の例外パケットを特定するためのルールを指定する。
【００４８】
次に、ＡＰＰ２０１は、ＮＩＣ  Ｄｒｉｖｅｒ２０３から受信したパケットをＡｌｔ−ＳＩＭ２０２を用いてパケット処理するように動作を切り変える（ステップＳ００５）。具体的には、ＮＩＣ  Ｄｒｉｖｅｒ２０３から受信したパケットをＡｌｔ−ＳＩＭ２０２に渡し、Ａｌｔ−ＳＩＭ２０２から出力されたパケットをＮ−ＳＷ１１３側に送る処理を行う。
【００４９】
次に、ＡＰＰ２０１は、ＦＰＧＡ  Ｄｒｉｖｅｒ２０４に対し、ＦＰＧＡ１１１の更新を指示する（ステップＳ００６）。以降、ＦＰＧＡ１１１側で回路情報の更新が行われる。
【００５０】
図６は、本実施形態におけるＦＰＧＡ１１１の更新処理の詳細を表したフローチャートである。ＦＰＧＡ  Ｄｒｉｖｅｒ２０４は、ＡＰＰ２０１からＦＰＧＡ１１１の更新指示を受信すると（ステップＳ１０１）、新しい回路情報をダウンロードし、ＦＬＡＳＨ１１９に配置する（ステップＳ１０２）。
【００５１】
次に、ＦＰＧＡ  Ｄｒｉｖｅｒ２０４は、ＦＰＧＡ１１１に再起動を指示する（ステップＳ１０３）。
【００５２】
次に、ＦＰＧＡ１１１は再起動し、ＦＬＡＳＨ１１９から新しい回路情報をロードする（ステップＳ１０４）。
【００５３】
以降、ＦＰＧＡ１１１は、新しい回路情報にて動作を開始する（ステップＳ１０５）。ＦＰＧＡ  Ｄｒｉｖｅｒ２０４は、ＦＰＧＡ１１１の起動完了をＡＰＰ２０１に通知する（ステップＳ１０６）。
【００５４】
再度、図５を参照して、上記ＦＰＧＡ１１１の起動完了後の動作を説明する。ＡＰＰ２０１は、前記ＦＰＧＡ１１１の起動完了通知を受け取ると（ステップＳ００８）、Ａｌｔ−ＳＩＭ２０２とＦＰＧＡ１１１間のメモリ同期を行う（ステップＳ００９）。
【００５５】
メモリ同期の完了後、ＡＰＰ２０１は、ＦＰＧＡ  Ｄｒｉｖｅｒ２０４に対し、Ｓ−ＳＷ１１２及びＮ−ＳＷ１１３をＦＰＧＡモードに切り替えるよう指示する（ステップＳ０１０）。
【００５６】
最後に、ＡＰＰ２０１は、Ａｌｔ−ＳＩＭ２０２を停止する（ステップＳ０１１）。
【００５７】
以上説明したとおり、本実施形態によれば、ＦＰＧＡ１１１の回路情報の更新中もＳ−ＳＷ１１２、Ｎ−ＳＷ１１３にパケットの転送を継続させ、代替モジュールにてパケットの処理を行わせ、サービスを継続することができる。具体的には、上記図６に示したＦＰＧＡ１１１更新時においても、代替モジュールとして、Ａｌｔ−ＳＩＭ２０２が処理を続けることで、サービスの完全停止を防ぐことができる。また、上記した説明からも明らかなように、本実施形態は、背景技術に記載した特許文献記載の手法との対比においても、ＦＰＧＡ１１１の書き変え可能な領域１１６を十分に利用できるという利点がある。
【００５８】
なお、上記した実施形態では、メモリ同期のために、Ｓ−ＳＷ１１２、Ｎ−ＳＷ１１３のバイパスモードで例外パケットの設定を行っているが、ＳＮＩＣ１００とＡＰＰ２０１との間には仮想スイッチが介在する場合も想定される。この場合、仮想スイッチにも例外パケットが通るように適切な設定を行えばよい。例えば、仮想スイッチを制御するＳＤＮ（Ｓｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｎｅｔｗｏｒｋ）コントローラに適切な指示を出せばよい。この場合においても、メモリ同期用のパケットを他のパケットとは独立するように扱うことで、メモリの同期を実施することができる。
【００５９】
［第２の実施形態］
続いて、メモリ同期を行う構成に変更を加えた本発明の第２の実施形態について図面を参照して詳細に説明する。図７は、本発明の第２の実施形態の構成を示す図である。図４に示した第１の実施形態との相違点は、ＤＲＡＭ１１８とＦＰＧＡ１１１との間にＤ−ＣＴＲＬ１２１というモジュールが追加されている点である。また、これに伴い、ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５ａと、ＡＰＰ２０１ａに変更が加えられている。その他の構成は、基本的に第１の実施形態と同様であるので、以下、その相違点を中心に説明する。
【００６０】
本実施形態では、ＤＲＡＭ１１８が、ＦＰＧＡ１１１の再起動中でも通電しており、内部の記憶情報が消えない特性を利用する。すなわち、ＦＰＧＡ１１１の再起動中においてもＡｌｔ−ＳＩＭ２０２からＤＲＡＭ１１８を直接参照させることで、メモリ同期自体を省略可能としている。そして、ＦＰＧＡ１１１起動完了後は、ＤＲＡＭ１１８をＦＰＧＡに再アタッチしてやることで、ＦＰＧＡ１１１は処理を継続できる。
【００６１】
Ｄ−ＣＴＲＬ１２１は、ＦＰＧＡ１１１又はＡｌｔ−ＳＩＭ２０２からＤＲＡＭ１１８へのアクセスを制御するモジュール（メモリ制御部）である。Ｄ−ＣＴＲＬ１２１は、ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５ａとも結線されている。Ｄ−ＣＴＲＬ１２１は、通常時においては、ＦＰＧＡ１１１からのアクセスのみを許容する。ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５ａからの指示があった場合、Ｄ−ＣＴＲＬ１２１は、Ａｌｔ−ＳＩＭ２０２に代表されるＯＳ上のアプリケーションに、ＤＲＡＭ１１８の一部もしくは全領域を割り当てる制御を行う。
【００６２】
ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５ａは、ＦＰＧＡ１１１を制御するためのハードウェアモジュールである。具体的には、ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５ａは、ＦＰＧＡ  Ｄｒｉｖｅｒからの制御に従い、ＦＰＧＡ１１１に対し、ＦＰＧＡ１１１の再起動やその回路情報の更新を命令する。また、ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５ａは、ＦＰＧＡ  Ｄｒｉｖｅｒ経由でＡＰＰ２０１ａ側に、ＦＰＧＡ１１１の状態を通知する。また、ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５ａは、ＡＰＰ２０１ａからの指示に従い、Ｓ−ＳＷ１１２、Ｎ−ＳＷ１１３を切り替えるスイッチ制御回路（スイッチ制御回路１５参照）としても機能する。
【００６３】
さらに、本実施形態のＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５ａは、Ｄ−ＣＴＲＬ１２１に対して、ＤＲＡＭへのアクセス主体の切り替えを指示する。具体的には、ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５ａは、ＤＲＡＭ１１８にアクセスできる主体を、ＦＰＧＡ１１１からＡｌｔ−ＳＩＭ２０２に変更する。また、ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５ａは、ＤＲＡＭ１１８にアクセスできる主体を、Ａｌｔ−ＳＩＭ２０２からＦＰＧＡ１１１に変更する。
【００６４】
ＡＰＰ２０１ａは、ＦＰＧＡ  Ｄｒｉｖｅｒ２０４経由で指示を出して、ＤＲＡＭ１１８のメモリ領域をアプリケーションから参照できる状態にする。これにより、Ａｌｔ−ＳＩＭ２０２が、ＤＲＡＭ１１８を直接参照できるようになる。また、ＡＰＰ２０１ａは、ＦＰＧＡ  Ｄｒｉｖｅｒ２０４経由で、ＤＲＡＭ１１８のメモリ領域をＦＰＧＡ１１１から参照できる状態に戻す処理を行う。
【００６５】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図８は、本発明の第２の実施形態の動作を表したフローチャートである。図８を参照すると、まず、ＡＰＰ２０１ａは、ＦＰＧＡ１１１の回路を更新するため、Ａｌｔ−ＳＩＭ２０２を起動する（ステップＳ２０１）。
【００６６】
次に、ＡＰＰ２０１ａは、ＤＲＡＭ１１８のアクセス主体をアプリケーションに切り替える（ステップＳ２０２）。この指示は、ＦＰＧＡ  Ｄｒｉｖｅｒ２０４、ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ１１５ａ及びＤ−ＣＴＲＬ１２１を経由して指示される。
【００６７】
次に、ＡＰＰ２０１ａは、Ａｌｔ−ＳＩＭ２０２の起動を確認して、Ａｌｔ−ＳＩＭ２０２にＤＲＡＭ１１８のアクセス権を渡す（ステップＳ２０３）。以降、Ａｌｔ−ＳＩＭ２０２は、ｍｏｄｕｌｅｓ１２０と同等の処理を実行できる状態になる。
【００６８】
次に、ＡＰＰ２０１ａは、ＦＰＧＡ  Ｄｒｉｖｅｒ２０４経由でＮ−ＳＷ１１３及びＳ−ＳＷ１１２をバイパスモードに切り替える（ステップＳ２０４）。
【００６９】
次に、ＡＰＰ２０１ａは、ＮＩＣ  Ｄｒｉｖｅｒ２０３から受信したパケットをＡｌｔ−ＳＩＭ２０２を用いてパケット処理するように動作を切り変える（ステップＳ２０５）。具体的には、ＮＩＣ  Ｄｒｉｖｅｒ２０３から受信したパケットをＡｌｔ−ＳＩＭ２０２に渡し、Ａｌｔ−ＳＩＭ２０２から出力されたパケットをＮ−ＳＷ１１３側に送る処理を行う。
【００７０】
次に、ＡＰＰ２０１ａは、ＦＰＧＡ  Ｄｒｉｖｅｒ２０４に対し、ＦＰＧＡ１１１の更新を指示する（ステップＳ２０６）。以降、ＦＰＧＡ１１１側で回路情報の更新が行われる。ＦＰＧＡ１１１側における回路情報の更新は、第１の実施形態と同様であるため、説明を省略する。
【００７１】
ＡＰＰ２０１ａは、前記ＦＰＧＡ１１１の起動完了通知を受け取ると（ステップＳ２０８）、ＤＲＡＭ１１８のアクセス主体を、Ａｌｔ−ＳＩＭ２０２からＦＰＧＡ１１１に戻す（ステップＳ２０９）。これにより、以降、ＦＰＧＡ１１１はＤＲＡＭ１１８を参照できるようになる。
【００７２】
その後、ＡＰＰ２０１ａは、ＦＰＧＡ  Ｄｒｉｖｅｒ２０４に対し、Ｓ−ＳＷ１１２及びＮ−ＳＷ１１３をＦＰＧＡモードに切り替えるよう指示する（ステップＳ２１０）。
【００７３】
最後に、ＡＰＰ２０１ａは、Ａｌｔ−ＳＩＭ２０２を停止する（ステップＳ２１１）。
【００７４】
以上、説明したように、第２の実施形態でも、ＦＰＧＡ１１１の回路情報の更新中もＳ−ＳＷ１１２、Ｎ−ＳＷ１１３にパケットの転送を継続させ、代替モジュールにてパケットの処理を行わせ、サービスを継続することができる。具体的には、上記図６に示したＦＰＧＡ１１１更新時においても、代替モジュールとして、Ａｌｔ−ＳＩＭ２０２が処理を続けることで、サービスの完全停止を防ぐことができる。さらに、第１の実施形態との対比においても、メモリ同期のための例外パケットの処理を省略できるという利点がある。
【００７５】
以上、本発明の各実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、各図面に示したネットワーク構成、各要素の構成、メッセージの表現形態は、本発明の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。
【００７６】
例えば、本発明は、ＮＩＣチップの機能もＦＰＧＡで実現したタイプのＳＮＩＣにも適用可能である。この場合、Ｓ−ＳＷ１１２ａ及びＮ−ＳＷ１１３ａは、図９に示すように、ＦＰＧＡ１１１内の書き換え可能領域（Ｗｒｉｔａｂｌｅ  ＦＰＧＡ）１１６の入出力端に配置されることになる（第３の実施形態）。
【００７７】
また、上記した各実施形態のＦＰＧＡ１１１に実装する機能は、通信の暗号化や、パケットのオーダリング等の通信処理に限られない。例えば、下記のような、より上位レイヤの処理をＦＰＧＡ１１１に担わせることもできる。
【００７８】
（１）Ｗｅｂサービス
本発明は、例えば、動的なＷｅｂコンテンツをＦＰＧＡ１１１上の回路で生成し、静的なコンテンツをＩＡサーバ２００側のＡＰＰ２０１で応答する形態のＷｅｂサービスを実現するＳＮＩＣにも適用可能である。  
【００７９】
一般的に動的Ｗｅｂコンテンツ作成の方がＣＰＵのリソースを使用するため、ＦＰＧＡ１１１に動的なＷｅｂページを生成する回路を実装することで、レスポンスを早くすることが可能になり、ユーザエクスペリエンス向上を期待できる。
例えば、動的Ｗｅｂページ作成は、外部のＤＢ（データベース）にアクセスしてユーザ登録情報（購入履歴など）を取得したり、外部サービスのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を呼び出すことが行われる。このように動的なＷｅｂページの生成には、ネットワークを経由して他サービスを介することが多い。ＳＮＩＣ内のＦＰＧＡ１１１で、こうした機能を実装することで、さらなる性能向上を期待することができる。
【００８０】
このとき、ＷｅｂサービスのセッションはＳＳＬ／ＴＬＳ等のセキュリティレイヤのコンテキスト情報だけではなく、ユーザセッションのコンテキストも管理している（例えば、ブラウザの戻るボタンを押しても、そのユーザセッションとして、ありえない画面遷移のため、Ｗｅｂサービスが以前と同じＷｅｂページを生成できないことがある）。なお、ＳＳＬ、ＴＬＳは、それぞれＳｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ、Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙの略である。
【００８１】
本発明のＳＮＩＣの場合、これらのコンテキスト情報は、ＳＮＩＣ１００内のＤＲＡＭ１１８上で保持される。このコンテキスト情報を、代替動的Ｗｅｂページ生成を行う代替モジュール（上記Ａｌｔ−ＳＩＭ２０２相当）と同期するように構成することで、ＦＰＧＡ１１１内の回路更新時も、ユーザセッション断を避けることができることになる。また、これにより、ユーザとしても、Ｗｅｂサービスへ再ログインする煩わしさが無くなるという利点がある。
【００８２】
（２）画像認識アプリケーション
運転支援サービスとして、車載のカメラで撮影した動画をモバイルエッジのデータセンターで解析処理して、危険物を認識し、近傍の自動車に通知するサービスが想定される。本発明は、このようなサービスを実現するＳＮＩＣにも適用可能である。
【００８３】
この時、画像の解析処理をＦＰＧＡ１１１で実装することで性能（例えば、認識件数／秒）を向上することができる。この画像認識エンジンを向上するには日々アップデートが必要になるが、本発明を適用することで、サービスを止めずに、画像認識エンジンの更新を行うことが可能となる。なお、その際に、サービスの特性を考慮して、画像認識エンジンの更新タイミングを決定することも好ましい。例えば、自動車の場合、夜間のユーザ数（自動車数）が少ないという特性がある。これを利用して、性能の縮退が許容される夜間に、サービス断を避けつつ解析エンジンを更新することができる。
【００８４】
また、上記した第１〜第３の実施形態のＩＡサーバは、図１０のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９０１０、通信インタフェース９０２０、メモリ９０３０、補助記憶装置９０４０を備える構成に例示される。
【００８５】
最後に、本発明の好ましい形態を要約する。
［第１の形態］
（上記第１の視点によるネットワークインタフェースカード参照）
［第２の形態］
上記したネットワークインタフェースカードの１対のスイッチは、
前記第２のモードにおいて、前記プログラム可能論理回路に、前記コンピュータ側とのメモリ同期用のパケットを送るよう動作する構成を採ることができる。
［第３の形態］
上記したネットワークインタフェースカードの１対のスイッチは、前記プログラム可能論理回路内部の可変領域の入力端と、出力端にそれぞれ配置されている構成を採ることができる。
［第４の形態］
上記したネットワークインタフェースカードは、さらに、
前記アプリケーションプログラム側から、プログラム可能論理回路が一時的に情報を記憶するために用いるメモリへのアクセスを許容するメモリ制御部を備える構成を採ることができる。
［第５の形態］
上記したネットワークインタフェースカードの前記プログラム可能論理回路は、前記メモリ制御部から前記メモリの情報を引き継ぐことで、前記回路情報の書き換え後、前記コンピュータで実施させていた処理を引き継ぎ可能に構成されていることが好ましい。
［第６の形態］
（上記第２の視点によるコンピュータ参照）
［第７の形態］
（上記第３の視点による回路情報の書き換え方法参照）
［第８の形態］
（上記第４の視点によるプログラム参照）
なお、上記第６〜第８の形態は、第１の形態と同様に、第２〜第５の形態に展開することが可能である。
【００８６】
なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の開示の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし選択（部分的削除を含む）が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。さらに、上記引用した文献の各開示事項は、必要に応じ、本発明の趣旨に則り、本発明の開示の一部として、その一部又は全部を、本書の記載事項と組み合わせて用いることも、本願の開示事項に含まれるものと、みなされる。
【符号の説明】
【００８７】
１０  ネットワークインタフェースカード
１１  プログラム可能論理回路
１２、１３  スイッチ
１４  コンピュータ側インタフェース（ＩＦ）
１５  スイッチ制御回路
２０  コンピュータ
１００、１００ａ、１００ｂ  ＳＮＩＣ
１１１  ＦＰＧＡ
１１２、１１２ａ  Ｓ−ＳＷ
１１３、１１３ａ  Ｎ−ＳＷ
１１４  Ｅｔｈｅｒ  Ｎｅｔｗｏｒｋ  Ｃｏｎｔｒｏｌｌｅｒ
１１５、１１５ａ  ＰＣＩＥ  Ｃｏｎｔｒｏｌｌｅｒ
１１６  書き換え可能な領域（Ｗｒｉｔａｂｌｅ  ＦＰＧＡ）
１１７  ＱＳＦＰ
１１８  ＤＲＡＭ
１１９  ＦＬＡＳＨ
１２０  ｍｏｄｕｌｅｓ
１２１  Ｄ−ＣＴＲＬ
２００  ＩＡサーバ
２０１、２０１ａ  ＡＰＰ
２０２  Ａｌｔ−ＳＩＭ
２０３  ＮＩＣ  Ｄｒｉｖｅｒ
２０４  ＦＰＧＡ  Ｄｒｉｖｅｒ
２０５  ＣＰＵ／ＲＡＭ
２１０  プログラム群（ＡＰＬ／ＯＳ）
９０００  コンピュータ
９０１０  ＣＰＵ
９０２０  通信インタフェース
９０３０  メモリ
９０４０  補助記憶装置
【図１】
2020122024.tif 000003
【図２】
2020122024.tif 000004
【図３】
2020122024.tif 000005
【図４】
2020122024.tif 000006
【図５】
2020122024.tif 000007
【図６】
2020122024.tif 000008
【図７】
2020122024.tif 000009
【図８】
2020122024.tif 000010
【図９】
2020122024.tif 000011
【図１０】
2020122024.tif 000012
【国際調査報告】
2020122024.tif 000013
2020122024.tif 000014
2020122024.tif 000015
2020122024.tif 000016