IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧

<>
  • 特許-転送処理装置 図1
  • 特許-転送処理装置 図2
  • 特許-転送処理装置 図3
  • 特許-転送処理装置 図4
  • 特許-転送処理装置 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-02
(45)【発行日】2024-12-10
(54)【発明の名称】転送処理装置
(51)【国際特許分類】
   G06F 9/50 20060101AFI20241203BHJP
   G06F 11/00 20060101ALI20241203BHJP
【FI】
G06F9/50 150C
G06F11/00 604C
【請求項の数】 7
(21)【出願番号】P 2022567967
(86)(22)【出願日】2020-12-10
(86)【国際出願番号】 JP2020046027
(87)【国際公開番号】W WO2022123721
(87)【国際公開日】2022-06-16
【審査請求日】2023-04-03
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】100098394
【弁理士】
【氏名又は名称】山川 茂樹
(74)【代理人】
【識別番号】100153006
【弁理士】
【氏名又は名称】小池 勇三
(74)【代理人】
【識別番号】100064621
【弁理士】
【氏名又は名称】山川 政樹
(74)【代理人】
【識別番号】100121669
【弁理士】
【氏名又は名称】本山 泰
(72)【発明者】
【氏名】伊藤 猛
(72)【発明者】
【氏名】田仲 顕至
(72)【発明者】
【氏名】有川 勇輝
(72)【発明者】
【氏名】寺田 和彦
(72)【発明者】
【氏名】竹谷 勉
(72)【発明者】
【氏名】坂本 健
【審査官】田中 幸雄
(56)【参考文献】
【文献】特開2018-36947(JP,A)
【文献】特開2004-199139(JP,A)
【文献】特開平8-329003(JP,A)
【文献】特開2017-146685(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
転送対象の演算命令を識別する演算命令識別子を取得し、演算命令識別子と演算命令番号との組み合わせを複数もつ演算命令識別子テーブルから、取得した前記演算命令識別子に対応する前記演算命令番号を取得し、取得した前記演算命令番号を前記演算命令とともに出力するように構成された演算命令番号取得回路と、
前記演算命令番号取得回路から出力された前記演算命令番号と前記演算命令とが入力され、演算命令番号と転送情報との組み合わせを複数もつ転送情報テーブルから、入力された前記演算命令番号に対応する前記転送情報を取得し、取得した前記転送情報を前記演算命令とともに出力するように構成された転送情報取得回路と、
前記転送情報取得回路に対してソフトウェア処理を実行するソフトウェア処理部と、
前記演算命令番号取得回路と前記転送情報取得回路との間に配置されて前記演算命令番号と前記演算命令とを中継するバッファ回路であり、前記演算命令番号と前記演算命令とを、前記ソフトウェア処理が実行されている間は保持し、前記ソフトウェア処理の終了後に前記転送情報取得回路に出力するように構成されたバッファ回路と、
を備える転送処理装置。
【請求項2】
前記演算命令識別子テーブルは、第1テーブル及び第2テーブルに冗長化され、
前記演算命令識別子テーブルの前記演算命令識別子に誤り検出訂正符号が付与されており、
前記演算命令番号取得回路は、前記第1テーブルの前記演算命令識別子に誤りがあるかを前記誤り検出訂正符号により検出し、誤りがあったときに、前記第2テーブルを参照して前記演算命令番号を取得するように構成されている、
請求項1に記載の転送処理装置。
【請求項3】
前記転送情報テーブルは、第1テーブル及び第2テーブルに冗長化され、
前記転送情報テーブルの前記転送情報に誤り検出訂正符号が付与されており、
前記転送情報取得回路は、前記第1テーブルの前記転送情報に誤りがあるかを前記誤り検出訂正符号により検出し、誤りがあったときに、前記第2テーブルを参照して前記転送情報を取得するように構成されている、
請求項1又は2に記載の転送処理装置。
【請求項4】
前記バッファ回路は、
前記演算命令を記憶するに、前記演算命令番号と誤り検出訂正符号とを含む情報を当該演算命令の前に付与するように構成されており、
前記演算命令を記憶する際に、前記情報の格納領域を確保してから前記演算命令を記憶するように構成されている、
ことを特徴とする請求項1から3のいずれか1項に記載の転送処理装置。
【請求項5】
前記演算命令を実行可能なときに当該演算命令を取得し、当該演算命令を実行する演算命令実行部をさらに備える、
請求項1から4のいずれか1項に記載の転送処理装置。
【請求項6】
前記演算命令番号取得回路は、前記演算命令実行部が前記演算命令を実行できないときに、前記演算命令番号を取得し、取得した前記演算命令番号を前記演算命令とともに出力するように構成されている、
請求項に記載の転送処理装置。
【請求項7】
前記転送情報又は前記演算命令が宛先アドレスを含むか、前記転送情報取得回路が前記宛先アドレスを前記転送情報又は前記演算命令とは別に出力するように構成され、
前記宛先アドレスは、前記演算命令を実行する演算デバイスがアクセスするメモリのアドレスである、
請求項1から6のいずれか1項に記載の転送処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算命令を転送するための処理を行う転送処理装置に関する。
【背景技術】
【0002】
近年、インターネット上で仮想現実又は人工知能を用いた高度なサービスが進展している。このような状況の中、高度なサービスに柔軟に対応するため、高性能な複数のコンピュータリソースを用いてソフトウェア上で仮想コンピュータを構成する技術(特許文献1参照)が開発されている。このような仮想コンピュータでは、複数の演算命令が、複数の物理マシン(分散コンピュータ)で分散して実行されることになる。この際、演算命令は、ある物理マシンから他の物理マシンに転送されることになる。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2018-36947号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ここで、演算命令は、高速で転送されるよう転送処理回路により転送されるが、仮想コンピュータにおいて転送される演算命令には種々のものがあり、転送処理回路に対してソフトウェア処理が必要となる場合がある。このようなソフトウェア処理としては、例えば、転送処理回路が保持するテーブルのソフトエラーからの回復、転送処理回路が保持するテーブルの更新等が挙げられる。ここで、一般にソフトウェア処理の処理速度は、転送処理回路の処理よりも遅いので、ソフトウェア処理が演算命令の転送処理に追い付かないことがある。この場合、演算命令の転送処理が正常に行われず、演算命令の誤転送が生じてしまう。
【0005】
この発明は、ソフトウェア処理と演算命令の転送処理とのタイミングずれによる誤転送を防止することを課題とする。
【課題を解決するための手段】
【0006】
上述した課題を解決するために、本発明に係る転送処理装置は、転送対象の演算命令を識別する演算命令識別子を取得し、演算命令識別子と演算命令番号との組み合わせを複数もつ演算命令識別子テーブルから、取得した前記演算命令識別子に対応する前記演算命令番号を取得し、取得した前記演算命令番号を前記演算命令とともに出力するように構成された演算命令番号取得回路と、前記演算命令番号取得回路から出力された前記演算命令番号と前記演算命令とを取得し、演算命令番号と転送情報との組み合わせを複数もつ転送情報テーブルから、入力された前記演算命令番号に対応する前記転送情報を取得し、取得した前記転送情報を前記演算命令とともに出力するように構成された転送情報取得回路と、前記転送情報取得回路に対してソフトウェア処理を実行するソフトウェア処理部と、前記演算命令番号取得回路と前記転送情報取得回路との間に配置されて前記演算命令番号と前記演算命令とを中継するバッファ回路であり、前記演算命令番号と前記演算命令とを、前記ソフトウェア処理が実行されている間は保持し、前記ソフトウェア処理の終了後に前記転送情報取得回路に出力するように構成されたバッファ回路と、を備える。
【発明の効果】
【0007】
本発明によれば、ソフトウェア処理と演算命令の転送処理とのタイミングずれによる誤転送を防止することができる。
【図面の簡単な説明】
【0008】
図1図1は、本発明の一実施形態に係る転送処理装置の構成図である。
図2図2は、図1の演算命令番号取得回路が実行する演算命令取得処理のフローチャートである。
図3図3は、図1のメモリバッファ回路が実行するバッファメモリ処理のフローチャートである。
図4図4は、図1の転送情報取得回路が実行する転送情報取得処理のフローチャートである。
図5図5は、図1のソフトウェア処理部が実行するテーブル回復処理のフローチャートである。
【発明を実施するための形態】
【0009】
本発明の一実施の形態に係る演算命令の転送処理装置10について、図面を参照して説明する。
【0010】
<演算命令の転送処理装置の全体構成>
図1に示すように、本実施の形態に係る転送処理装置10は、ネットワークNに接続されている。転送処理装置10は、仮想コンピュータのノードを構成する複数の分散コンピュータの一つとして構成されている。転送処理装置10は、前記所定の計算を統括するサーバコンピュータ110と、複数の他の分散コンピュータ120と、ネットワークNを介して通信可能に構成されている。転送処理装置10、サーバコンピュータ110、及び、複数の他の分散コンピュータ120は、分散処理されるソフトウェアコンポーネントを構成する演算命令を送受信し、受信した演算命令を実行する。
【0011】
図1に示すように、転送処理装置10は、演算命令番号取得回路20と、バッファ回路30と、転送情報取得回路40と、ソフトウェア処理部50と、記憶部60と、を備える。転送処理装置10が備える上記回路20~40は、演算命令を転送するための処理を行う転送処理回路10Aを構成している。転送処理回路10Aは、FPGA(Field Programmable Gate Array)により構成され、上記回路20~40それぞれはFPGAの一部により構成されている。転送処理回路10Aは、FPGA以外の論理回路等により構成されてもよい。ソフトウェア処理部50は、記憶部60が記憶するプログラムを実行するCPUと、当該CPUのメインメモリであるRAMと、により構成されている。
【0012】
転送処理装置10がサーバコンピュータ110又は他の分散コンピュータ120から受信した演算命令は、演算命令番号取得回路20に入力される。演算命令番号取得回路20は、演算命令の次の転送先に関する情報である転送情報(例えば、演算命令を送出するポート番号、及び又は、演算命令の宛先アドレスなど)に対応する転送命令番号を取得する。バッファ回路30は、演算命令番号取得回路20と転送情報取得回路40との間に配置され、演算命令番号取得回路20から転送情報取得回路40に供給される演算命令と演算命令番号とを一時記憶して中継する。転送情報取得回路40は、演算命令番号に基づいて転送情報を取得し、取得した転送情報を演算命令に付与する。転送情報が付与された演算命令は、当該転送情報に基づいて、不図示のネットワークカード等の通信装置により当該転送情報が示す転送先に送信される。転送先が分散コンピュータ120の場合、演算命令は、分散コンピュータ120のメモリ120Aに格納されて演算装置120Bにより実行される。演算装置120は、CPU等のプロセッサ等に含まれ、メモリ120Aはキャッシュメモリ等であればよい。転送処理装置10には、多数の演算命令が入力され、上記回路20~40は、演算命令を順次処理していく。
【0013】
詳細は後述するが、演算命令番号取得回路20は、転送命令番号を取得するときに、演算命令に基づく演算命令識別子と、演算命令番号と、の組み合わせを複数もつ演算命令識別子テーブル29を参照する。演算命令識別子テーブル29は、演算命令番号取得回路20のメモリ21に格納されている。転送情報取得回路40は、転送情報を取得するときに、演算命令番号と転送情報との組み合わせを複数もつ転送情報テーブル49を参照する。転送情報テーブル49は、転送情報取得回路40のメモリ41に格納されている。ソフトウェア処理部50は、前記各テーブル29、49の更新等の管理を行う。
【0014】
上記各回路20~40は、プログラムを実行する形式で処理を行うのではなく、論理回路による処理を行う。このような処理は、ハードウェア処理といえる。他方、ソフトウェア処理部50は、プログラム(ソフトウェア)を実行して処理を行う。このような処理は、ソフトウェア処理である。上記ハードウェア処理の処理速度は、ソフトウェア処理の処理速度よりも早い。バッファ回路30は、上記ハードウェア処理とソフトウェア処理との処理速度の違いを吸収するよう演算命令等を所定期間保持する。例えば、バッファ回路30は、ソフトウェア処理部50による転送情報テーブル49の更新が終わるまで、転送情報取得回路40に演算命令等を出力しないように構成されている。
【0015】
<演算命令>
演算命令の構成は任意である。演算命令は、ここでは、先頭のヘッダ等により構成される8バイトの内部処理子と、演算命令の内容(データ)を示す演算命令本体と、を含むものとする。内部処理子は、演算命令の送出元のコンピュータのアドレス、及び、演算命令全体の長さなどの情報を含むものとする。演算命令本体は、32ビット=4バイト等のRISC演算命令とする。
【0016】
<演算命令番号取得回路20>
図1に示すように、演算命令番号取得回路20は、メモリ21と、演算命令処理部22と、テーブル処理部23と、誤り検出訂正部24と、を備える。
【0017】
メモリ21は、上述した演算命令識別子テーブル29を記憶している。演算命令識別子テーブル29は、ソフトエラー対策のため、主の第1テーブル29A及び従の第2テーブル29Bという同じ内容の2つのテーブルに冗長化されている。第1テーブル29A及び第2テーブル29Bそれぞれでは、複数の演算命令識別子に演算命令番号がそれぞれ対応付けられている。ここでは、テーブル29A及び29Bにおける演算命令識別子の行の順位が、演算命令番号となっている。例えば、51行目の演算命令識別子に対応する演算命令番号は51となる。演算命令番号は、転送情報テーブル49の行にも対応している。従って、演算命令番号は、転送情報とも対応付けられている。演算命令識別子は、演算命令に基づいて取得されるものであり、演算命令を識別する。演算命令番号は、演算命令識別子ごとに設定されており、一の転送情報に対応する。
【0018】
メモリ21は、CAM(Content Addressable Memory)を含み、当該CAMに演算命令識別子テーブル29が記憶されてもよい。この場合、演算命令番号は、転送情報取得回路40の転送情報テーブル49における、当該演算命令番号に対応する転送情報のメモリ41のアドレスとする。このような構成により、転送情報の取得が高速化される。
【0019】
演算命令処理部22、テーブル処理部23、及び、誤り検出訂正部24は、協働して図2に示す演算命令番号を取得するための演算命令番号取得処理を実行する。当該処理は、演算命令番号取得回路20に演算命令が入力されたことを契機として開始される。
【0020】
図2の演算命令番号取得処理において、演算命令処理部22は、入力された演算命令を自身のRAMに保持し、演算命令を先頭から所定の長さだけを読み取る(ステップS101)。ここでは、演算命令は、8バイトの内部処理子と、32ビットのRISC演算命令と、からなるとする。演算命令処理部22は、ここでは演算命令のうち先頭から12バイト目までの情報、つまり演算命令全体を読み取る。読み取られる情報は、一部の情報のみでもよい。
【0021】
その後、演算命令処理部22は、ソフトウェア処理部50が当該演算命令を実行可能か判別する(ステップS102)。演算命令処理部22は、ソフトウェア処理部50と定期的に通信し、ソフトウェア処理部50にリソースの余剰があるかを監視しているものとする。演算命令処理部22は、ソフトウェア処理部50にリソースの余剰がある場合、ソフトウェア処理部50が演算命令を実行可能と判別する(ステップS102;Yes)。この場合、演算命令処理部22は、演算命令をソフトウェア処理部50に出力して、ソフトウェア処理部50に当該演算命令を実行させる(ステップS103)。ソフトウェア処理部50が実行可能な演算命令の種類が限定される場合、演算命令処理部22は、RISC演算命令の後述の「opcode」等に基づいてソフトウェア処理部50が演算命令を実行可能か判別してもよい。
【0022】
ソフトウェア処理部50が演算命令を実行できない場合(ステップS103;No)、演算命令処理部22は、ステップS101で読み取った情報に基づいて上記演算命令を識別する演算命令識別子を取得する(ステップS104)。演算命令識別子は、演算命令の演算の種類の情報と、当該演算命令の送信元のアドレスと、を含むものとする。この実施の形態では、演算の種類と送信元のアドレスとに応じて、演算命令の転送先、つまり、演算命令を実行する他の分散コンピュータが割り当てられている。演算命令の演算の種類の情報は、演算命令本体に基づいて取得される。演算命令本体(RISC演算命令)が、「funct7 rs2 rs1 funct3 rd opcode」であるとすると、演算命令の演算の種類の情報は、funct7、funct3、opcodeを組み合わせた合計17ビットとする。または、演算命令の演算の種類の情報は、演算の種類を特定可能なfunct7、funct3、及び、opcodeの下2ビット、下2ビット、及び、下5ビットを組み合わせた情報としてもよい。例えば、funct7が00、funct3が00、opcodeが10011とすると、演算の種類の情報は、000010011となる。送信元のアドレスは、演算命令の内部識別子から抽出される。
【0023】
ステップS104の後のステップS105は、テーブル処理部23及び誤り検出訂正部24により実行される。具体的に、テーブル処理部23は、演算命令識別子テーブル29の主テーブルである第1テーブル29Aのエントリ(演算命令識別子)を1つずつ読み込み、演算命令処理部22が取得した演算命令識別子と一致するエントリを検索する。演算命令識別子テーブル29の各エントリは、ワード単位で管理され、エントリごとに誤り検出訂正符号が付加されている。誤り検出訂正部24は、テーブル処理部23によりエントリが読み込まれるたびに、そのエントリに対して誤りの検出及び訂正の処理を行う。誤り検出訂正符号は、宇宙線等を原因とするビット反転によるソフトエラー対策である。
【0024】
誤りの検出結果のケースとしては、(1)誤り検出なし、(2)誤り検出ありかつ訂正可、(3)誤り検出ありかつ訂正不可、が考えられる。例えば、第1テーブル29Aの検出結果が上記(1)の場合、テーブル処理部23は、上記で読み込んだエントリと、演算命令処理部22が取得した演算命令識別子とを突合する。両者が一致しない場合、テーブル処理部23は、次の行のエントリを読み込む。上記(2)の場合、誤り検出訂正部24は、誤り検出訂正符号によりエントリの誤りを訂正し、テーブル処理部23は、訂正後のエントリと演算命令識別子とを突合する。両者が一致しない場合、テーブル処理部23は、次の行のエントリを読み込む。上記(3)の場合、テーブル処理部23は、第2テーブル29Bのエントリを読み込み、当該エントリに対して誤り検出訂正部24により誤りの検出が行われる。当該検出の結果のケースは、上記(1)~(3)と同じである。上記(1)及び(2)では、エントリ又は訂正後のエントリと演算命令識別子との突合が行われる。上記(3)の場合、テーブル処理部23は、現在読み込んでいるエントリと演算命令識別子との突合を中止し、次のエントリの読み込みを行う。
【0025】
図示していないが、誤り検出訂正部24は、上記で行なった誤り検出の結果を、当該誤り検出訂正部24が備えるRAM等に、第1テーブル29Aと第2テーブル29Bとで別々にエントリごとに保持する。前記の結果としては、上記(1)~(3)がある。
【0026】
ステップS105の後、テーブル処理部23は、演算命令処理部22が取得した演算命令識別子と、エントリとが一致した場合に、当該エントリに対応した演算命令番号を取得する(ステップS106)。例えば、第1テーブルの512行目において、演算命令識別子000010011が一致したとすると、512番が演算命令番号とて取得される。その後、演算命令処理部22は、演算命令と、ステップS106で取得された演算命令番号と、をバッファ回路30に出力する(ステップS107)。演算命令番号は、内部処理子の所定領域内に入れられた状態で出力されてもよい。
【0027】
その後、誤り検出訂正部24は、RAM等に保持する上記誤り検出の結果をソフトウェア処理部50に通知する(ステップS108)。ソフトウェア処理部50は、当該通知を受けて、演算命令識別子テーブルの更新等を行う(詳細は後述)。
【0028】
以上のように、演算命令識別子テーブルの各エントリに、誤り検出訂正符号を付与し、かつ、演算命令識別子テーブルを2重化することにより、この実施の形態では、宇宙線によるビット反転のソフトエラーに対策が施されている。誤り検出訂正符号はいくつかあるが、この実施の形態では宇宙線によるビット反転という発生頻度が小さいエラーを対象とするため、誤り検出訂正には、単一エラー訂正、2つエラー検知を行うSECDED(single error correction double error detection)を用いる。これにより、回路インパクトを大きくせずに効率的にエラー訂正を行うことができる。
【0029】
<バッファ回路30>
図1に示すように、バッファ回路30は、バッファメモリ制御部31と、バッファメモリ32と、を備える。バッファメモリ制御部31は、図3のバッファメモリ処理を実行することで、演算命令処理部22が出力した演算命令番号と演算命令とを転送情報取得回路40からの出力要求があるまでバッファメモリ32に保持する制御を行う。
【0030】
バッファメモリ処理において、バッファメモリ制御部31は、まず、演算命令番号取得回路20が出力した演算命令番号と演算命令とに基づき、演算命令の属性情報を取得する(ステップS201)。属性情報は、ここでは、演算命令番号と、演算命令の先頭の内部処理子に含まれる演算命令の長さと、からなるものとする。以下、演算命令番号をG1、演算命令の長さをG2、演算命令をFとする。
【0031】
その後、バッファメモリ制御部31は、演算命令Fに誤りが重畳した場合にこの誤りを検出できるように、演算命令F全体に対して誤り検出符号を算出し、算出した誤り検出符号を演算命令Fの末尾に付与する(ステップS202)。この例では、CRC8(Cyclic Redundancy Check 8)を誤り検出符号として付与する。誤り検出符号はCRC8に限らず、類似の様々な誤り検出符号形式が適応可能である。誤り検出符号を、訂正も可能な誤り検出訂正符号としてもよい。以下では、誤り検出符号を含めて演算命令Fとする。内部処理子内の演算命令の長さG2は、末尾の誤り検出符号を加えた長さG2に補正される。
【0032】
その後、バッファメモリ制御部31は、ステップS201で得られた演算命令Fの属性情報(G1、G2)と演算命令Fとを紐付ける識別子を生成する(ステップS203)。この識別子は、演算命令Fの前に配置され、演算命令Fを識別する情報である。バッファメモリ制御部31は、固定長の識別子を用意し、この識別子に属性情報(G1,G2)を埋め込む。この際、属性情報(G1,G2)を割り当てる識別子内の領域を予め決めておくとよい。この入力演算命令の属性情報(G1,G2)を識別子に埋め込むことによって、入力された演算命令Fと入力演算命令の属性情報(G1,G2)との紐付が行われる。以下、このステップS203で生成した識別子をSとする。
【0033】
その後、バッファメモリ制御部31は、生成した識別子Sに対して誤り検出訂正可能なように、識別子S全体について誤り検出訂正符号を算出し、算出した誤り検出訂正符号を、識別子S内の特定領域、例えば、演算命令の長さ、演算命令番号に影響のない[23:16]に埋め込むに埋め込む(ステップS204)。例えば、誤り検出訂正符号として、SECDED符号を適応すれば、実際に発生するソフトエラーの誤りパタンをカバーすることが可能である。誤り検出訂正符号は、識別子Sのうち前記演算命令の長さ及び演算命令番号のみを対象としたものであってもよい。この場合、後述の識別子Sの誤り検出訂正は、識別子Sのうちの前記演算命令の長さ及び演算命令番号のみを対象とする。
【0034】
その後、バッファメモリ制御部31は、演算命令Fのバッファメモリ32へのバッファリングを開始する(ステップS205)。先のステップS204では、演算命令Fから取得する演算命令Fの長さG2、演算命令番号G1を元に識別子Sを生成するため、識別子Sのバッファメモリ32へのバッファリングが演算命令Fよりも遅れることがある。ステップS205では、演算命令Fのバッファリングを行う前に、識別子Sをバッファリングする領域がバッファメモリ32内に確保される。そして、この確保された領域を避けて、演算命令Fはバッファメモリ32に蓄積される。この識別子Sのための領域は、読み出し順位が演算命令Fよりも上位となる領域である。
【0035】
その後、バッファメモリ制御部31は、バッファメモリ32の上記で確保した領域への識別子Sのバッファリングを開始する(ステップS206)。
【0036】
その後、バッファメモリ制御部31は、演算命令Fと識別子Sのバッファリング状態を監視制御する(ステップS207)。より具体的に、バッファメモリ制御部31は、識別子S及び演算命令Fが全てバッファメモリ32に格納されたかを監視する。識別子S及び演算命令Fのバッファメモリへの格納後、バッファメモリ制御部31は、後工程における識別子S及び演算命令Fの出力指示があるまで、蓄積された識別子S及び演算命令Fをバッファメモリ32内に保持する。
【0037】
転送情報取得回路40は、適宜のタイミングにてバッファ回路30に対して1つの識別子S及び演算命令Fのセットの出力指令をバッファ回路30に対して行う。バッファメモリ制御部31は、この出力指令を受け取るまで待機し、当該出力指令を受け取ると、バッファメモリ32から、識別子Sと演算命令Fとのセットのうち識別子S全体を少なくとも含む一部を読み出す(ステップS208)。バッファメモリ32は、ここではFIFO(first in first out)方式であり、出力指令があると、バッファメモリ32に最初に格納された識別子Sから出力される。つまり、演算命令Fが出力される際は、その前の領域に保持されている識別子Sから出力されることになる。この際、バッファメモリ32のビット幅が識別子Sのビット数より大きく、尚且つ、バッファメモリ32の1層目先頭から識別子Sが格納されている場合は、少なくとも、バッファメモリ32の1層目のみ取り出せば、読み出された情報には、識別子Sを全て含まれることになる。
【0038】
識別子Sの読み出し後、バッファメモリ制御部31は、識別子Sに埋め込まれている誤り検出訂正符号(SECDED符号)を読み取り、読み取った誤り検出訂正符号を用いて識別子Sに誤りがあるかを判別する(ステップS209)。誤りが無い場合(ステップS209;No)、識別子Sは正しい情報であることが担保されている。この場合、バッファメモリ制御部31は、演算命令Fの残りをバッファメモリ32から読み出して、識別子S及び演算命令F全体を転送情報取得回路40に出力する(ステップS210)。演算命令Fの残りは、識別子Sに含まれる演算命令Fの長さの情報により特定される。
【0039】
バッファメモリ制御部31は、識別子Sについて誤りを検出した場合(ステップS209;Yes)、検出したその誤りが訂正可能であるか判別する(ステップS211)。この場合、ソフトエラー等によって、識別子S内のビット誤りが1箇所であれば、誤りが訂正可能である。ソフトエラー等によって、識別子S内のビット誤りが2箇所以上であれば、誤りが訂正できないことになる。
【0040】
バッファメモリ制御部31は、識別子Sの誤りが訂正可能である場合(ステップS211;Yes)、識別子Sの誤り検出訂正を行う(ステップS212)。この誤り検出訂正によって、バッファメモリ3から読み出された識別子Sは、誤りのない正しい情報であることが担保される。その後、バッファメモリ制御部31は、演算命令Fの残りをバッファメモリ32から読み出して、訂正後の識別子S及び演算命令Fを転送情報取得回路40に出力する(ステップS213)
【0041】
識別子Sの誤りが訂正不可である場合(ステップS211;No)、識別子S内の演算命令の長さG2と演算命令番号G1の各情報には信頼性がない。特に、演算命令の長さG2が間違っている場合は、バッファメモリ32に他の演算命令が格納されている場合、演算命令Fの末尾と他の演算命令の識別子Sの先頭との境目が不明瞭になり、逐次処理される演算命令Fは全て間違って処理されてしまう。このため、バッファメモリ制御部31は、識別子Sの誤りが訂正不可である場合、現在バッファメモリ32に格納している演算命令及び識別子をすべてクリア(廃棄)する(ステップS214)。このとき、バッファメモリ制御部31は、バッファメモリ32から読み出し途中の演算命令、バッファメモリ32に格納途中の演算命令をクリア(廃棄)するようにしてもよい。演算命令及び識別子が固定長である場合、処理対象の識別子に対応する演算命令のみを廃棄してもよい。
【0042】
上記一連の処理によれば、バッファメモリ制御部31は、バッファメモリ32から演算命令Fの末尾まで読み出して処理するのではなく、バッファメモリ32の1層目のみ読み出すといった簡易な処理で、正しい識別子S及び演算命令Fを取得できる。
【0043】
また、ソフトエラーによる誤り検出訂正可能なビットエラーが発生しても、演算命令の長さG2、演算命令番号G1の誤りを訂正する簡易な処理によって、演算命令に対する処理を停止させることなく、処理を行うことができる。
【0044】
また、実装した誤り検出訂正では訂正できない誤りがあったとき、バッファメモリ32内の演算命令等を廃棄することで、バッファメモリ32に蓄積された演算命令を犠牲にするだけで、その後の演算命令処理への影響を抑制できる。
【0045】
<転送情報取得回路40>
図1に示すように、転送情報取得回路40は、メモリ41と、演算命令処理部42と、テーブル処理部43と、誤り検出訂正部44と、を備える。
【0046】
メモリ41は、上述した転送情報テーブル49を記憶している。転送情報テーブル49は、ソフトエラー対策のため、主の第1テーブル49A及び従の第2テーブル49Bという同じ内容の2つのテーブルに冗長化されている。転送情報テーブル49の各エントリは、ワード単位で管理され、エントリごとに誤り検出訂正符号が付加されている。転送情報テーブル49つまり主従の第1及び第2テーブル49A及び49Bそれぞれでは、複数の転送情報に複数の演算命令番号がそれぞれ対応付けられている。ここでは、主従の第1及び第2テーブル49A及び49Bにおける転送情報の行の順位が、演算命令番号となっている。例えば、51行目の転送情報に対応する演算命令番号は51となる。
【0047】
演算命令処理部42、テーブル処理部43、及び、誤り検出訂正部44は、協働して図4に示す転送情報取得処理を実行する。転送情報取得回路40は、ソフトウェア処理部50による後述のソフトウェア処理が実行されていないときの任意のタイミングでバッファ回路30に演算命令の出力指令を供給する。転送情報取得処理は、前記の出力指令に応答してバッファ回路30から転送情報取得回路40に識別子S及び演算命令Fが入力されたことを契機として開始される。
【0048】
転送情報取得処理において、まず、演算命令処理部42は、識別子S及び演算命令Fを自身のRAMに保持し、識別子Sに含まれる演算命令番号を抽出する(ステップS301)。演算命令処理部42は、最初に識別子Sに含まれる誤り検出訂正符号を用いて誤り検出訂正処理を行ってもよい。演算命令処理部42は、演算命令Fの末尾の誤り検出符号により誤り検出を行ってもよい。
【0049】
その後、テーブル処理部43は、転送情報テーブル49の第1テーブル49Aから演算命令番号が示す行に格納されている転送情報を取得する(ステップS302)。例えば、演算命令番号が512行を示す場合、512番目の転送情報が取得される。その後、誤り検出訂正部44は、取得された転送情報に付加されている誤り検出訂正符号に基づいて転送情報の誤り検出及び訂正処理を行う(ステップS303)。誤り検出の結果としては、(1)誤り検出なし、(2)誤り検出ありかつ訂正可、(3)誤り検出ありかつ訂正不可がある。上記(1)の場合、その転送情報がステップS304以降でそのまま使用される。上記(2)の場合、誤り検出訂正部44は誤りの訂正を行う。この場合は、それ以降、訂正後の転送情報がステップS304以降で使用される。上記(3)の場合、テーブル処理部43は、第2テーブル49Bを参照して転送情報を取得し、上記と同様に誤り検出訂正等を行う。なお、誤り検出訂正部44が第2テーブル49Bから読み出した転送情報について訂正不可な誤りを検出した場合、転送情報取得処理を中止する。
【0050】
図示していないが、誤り検出訂正部44は、上記で行なった誤り検出の結果を、当該誤り検出訂正部44が備えるRAM等に、第1テーブル49Aと第2テーブル29Bとで別々にエントリごとに保持する。前記の結果としては、上記(1)~(3)がある。
【0051】
演算命令処理部42は、テーブル処理部43が取得した又は誤り検出訂正部44により訂正された転送情報を演算命令Fの転送先を示す情報として当該演算命令Fに付与し、転送情報と演算命令Fとを出力する(ステップS304)。演算命令処理部42は、転送情報と演算命令Fに加え、識別子Sも出力してもよい。
【0052】
その後、誤り検出訂正部44は、RAM等に保持する上記誤り検出の結果をソフトウェア処理部50に通知する(ステップS305)。ソフトウェア処理部50は、当該通知を受けて、演算命令識別子テーブルの更新等を行う(詳細は後述)。
【0053】
以上のように、転送情報テーブルの各エントリに、誤り検出訂正符号を付与し、かつ、当該テーブルを2重化することにより、この実施の形態では、宇宙線によるビット反転のソフトエラーに対策が施されている。上記同様、誤り検出訂正には、単一エラー訂正、2つエラー検知を行うSECDEDを用いる。これにより、回路インパクトを大きくせずに効率的にエラー訂正を行うことができる。
【0054】
<ソフトウェア処理部50>
図1に示すように、ソフトウェア処理部50は、テーブル回復判別部51、テーブル更新部52、及び、テーブル処理停止/再開部53を備える。上記の演算命令識別子テーブル29及び転送情報テーブル49のエントリに対して誤りが検出された場合、各テーブルにはあらかじめエントリが記録されていることから、この誤りは、ソフトエラーによるビット反転の可能性がある。そこで、ソフトウェア処理部50は、上記各部51~53によりテーブルを回復するための処理を行う。
【0055】
テーブル回復判別部51は、演算命令が処理されるごとに演算命令番号取得回路20の誤り検出訂正部24から通知される誤り検出結果(ステップS108)に基づいて、演算命令識別子テーブル29のエントリごとに、誤り検出ありの結果(ここでは、訂正の可否は問わない)が出た回数をカウントする。当該カウント値はエントリごとにテーブル化されて保持される。このような処理により、演算命令識別子テーブル29のエントリの正確性つまり品質が監視される。
【0056】
テーブル回復判別部51は、演算命令が処理されるごとに転送情報取得回路40の誤り検出訂正部44から通知される転送情報(ステップS305)に基づいて、転送情報テーブル49のエントリごとに、誤り検出ありの結果(ここでは、訂正の可否は問わない)が出た回数をカウントする。当該カウント値はエントリごとにテーブル化されて保持される。このような処理により、転送情報テーブル49のエントリの正確性つまり品質が監視される。
【0057】
テーブル回復判別部51は、上記の通知(ステップS108又はS305)があるごとに、あるエントリの上記カウント値が所定の閾値を超えたかを判別する。テーブル回復判別部51は、前記カウント値が前記閾値を超えたと判別したときに、当該エントリが属するテーブルを対象として図5に示すテーブル回復処理を行うと判別する。
【0058】
誤りが検出された場合は、テーブルにはあらかじめエントリが書かれていたことから、ソフトエラーによるビット反転の可能性がある。
【0059】
以下、転送情報テーブル49のエントリについての上記カウント値が上記所定の閾値を超えた場合のテーブル回復処理を説明する。
【0060】
図5のテーブル回復処理では、まず、テーブル処理停止/再開部53が、今回のテーブル回復処理の対象である転送情報テーブル49を扱う転送情報取得回路40に対してテーブル処理の停止を指示する(ステップS401)。テーブル処理は、ここでは、転送情報テーブル49を参照する処理であり、図4のステップS302である。転送情報取得回路40は、当該指示を受けたとき、ステップS302の処理を行っている場合には、当該処理を停止する。テーブル回復処理の対象が演算命令識別子テーブル29の場合、テーブル処理は、図2のステップS105及びS106である。
【0061】
ステップS401のあと、テーブル更新部52は、転送情報テーブル49の第1テーブル49Aと第2テーブル49Bのうち、上記カウント値が上記所定の閾値を超えたエントリの属するテーブルの更新を行う(ステップS402)。テーブル更新部52は、更新の際、前記閾値を超えたエントリのみを正しいデータに書き換えてもよいし、第1テーブル49A又は第2テーブル49B全体を書き換えてもよい。テーブル更新部52は、第1テーブル49Aと第2テーブル49Bとの両者を更新してもよい。更新に必要なデータは、例えば、記憶部60又はサーバコンピュータ110から取得されればよい。
【0062】
上記更新が終了すると、テーブル処理停止/再開部53は、転送情報取得回路40に対してテーブル処理の開始を指示する(ステップS403)。転送情報取得回路40は、当該指示を受けたとき、ステップS302の処理を停止しているときは、当該処理を再開する。
【0063】
ソフトウェア処理部50は、演算命令番号取得回路20又は転送情報取得回路40と通信し、上記のように誤りが検出されるたびに、誤りのあったつまりビット反転のあったエントリを、正常エントリに書き換えることもできる。しかし、上記各テーブル29又は49を高速で検索するため、前記のような書き換え処理は極力減らしたい。このため、演算命令番号取得回路20又は転送情報取得回路40では、一度あるエントリについて誤りを検出した場合には、テーブル処理部23又は43が、この情報をRAM等のテーブルに保持し、次回以降の検索では、誤りが検出されたエントリを避けて、検索を行ってもよい。これにより、検索の効率化、すなわち、検索についての処理遅延の低減が図れる。
【0064】
大量の演算命令に対して、検索結果の蓄積が行われた結果、ソフトエラーの蓄積によって、エントリの検索が不可能となった場合は、演算命令番号取得回路20又は転送情報取得回路40での処理が停止するなどの影響が考えられる。上述のように、テーブル回復判別部51がエントリ全体の誤りの検出の状況を監視し、上記閾値で、テーブルの回復判断を行うことで、上記処理の停止などの悪影響の発生を防止できる。
【0065】
テーブル回復判別部51がカウントする対象は、誤り検出ありの結果ではなく、誤り検出ありかつその誤りが訂正不可である場合のみとしてもよい。これにより、処理遅延を低減できる。
【0066】
ソフトウェア処理部50は、演算命令識別子テーブル29及び転送情報テーブル49で定義される転送先(転送情報)を適宜変更してもよい。例えば、サーバコンピュータ110は、転送処理装置10と、分散コンピュータ120とを監視して、どのコンピュータにどの演算命令を転送するかを管理しているとする。この場合、サーバコンピュータ110は、状況に応じて、演算命令の転送先を定義している上記テーブル29及び49の内容の更新をソフトウェア処理部50に指示する。ソフトウェア処理部50は、当該指示に基づいて、テーブル更新部52などにより、演算命令番号取得回路20又は転送情報取得回路40に対してソフトウェア処理を行うことで、上記テーブル29及び49の内容を更新する。この場合も、演算命令番号取得回路20又は転送情報取得回路40でのテーブル処理は適宜停止されることになる。テーブル29及び49の内容を更新することで、例えば、ある分散コンピュータ120が分散処理を実行できなくなったことをサーバコンピュータ110が検知したときに、当該分散コンピュータ120を転送先の候補から除外することができる。
【0067】
(実施形態上の効果等)
以上のように、ソフトウェア処理部50は、テーブルの回復又は更新のため、演算命令番号取得回路20又は転送情報取得回路40に対してソフトウェア処理を行う。この際、特に、転送情報取得回路40では、ソフトウェア処理が実行されている間、演算命令を転送するためのハードウェア処理である転送処理(上記転送情報テーブル49を参照する図4のステップS302等)が停止することになり、転送処理がソフトウェア処理により遅延する。仮に、バッファ回路30を設けないとすると、転送情報取得回路40での転送処理が停止してソフトウェア処理が行われている間にも、当該転送情報取得回路40に演算命令番号取得回路20から演算命令が入力されてしまう。このような場合、現在転送情報取得回路40の処理対象となっている演算命令が、後から入力された演算命令と混ざってしまい、演算命令の転送処理が正常に行われず、演算命令が所望の宛先に意図しない他の演算命令とともに転送されてしまうといった演算命令の誤転送といった不都合が生じ得る。この実施の形態では、演算命令番号取得回路20と転送情報取得回路40との間にバッファ回路30を設けている。そして、当該バッファ回路30は、転送情報取得回路40からの出力指示があるまで、そのとき保持している演算命令を出力しない。このように、このバッファ回路30は、演算命令番号取得回路20が出力した演算命令番号と演算命令とを、転送情報取得回路40に対するソフトウェア処理が終了してから出力するように構成されている。これにより、ソフトウェア処理が演算命令の転送処理に追い付かないことにより演算命令の転送処理が正常に行われず演算命令の誤転送が生じてしまうといった不都合が防止される。つまり、この実施の形態によれば、ソフトウェア処理と演算命令の転送処理とのタイミングずれによる誤転送が防止される。これにより、信頼度の高い転送が実現される。
【0068】
また、演算命令の転送の際に参照されるテーブル29又は49のエントリにソフトエラーによる誤りが発生しても、テーブルが2重化され、尚且つ、誤り検出訂正符号がエントリ毎(例えばワード単位)で付与されているので、転送処理装置10はソフトエラー耐性がある。加えて、ソフトウェア処理部50によるテーブル全体の回復要否判断によりテーブル全体の書換えをソフトエラーが蓄積してから行うことができ、これにより検索中のテーブル更新を回避でき、テーブル処理速度の高速化、並びに、処理遅延低減が可能となる。
【0069】
さらに、バッファ回路30は、演算命令番号と誤り検出訂正符号とを含む情報(識別子S)を演算命令Fの前に付与し、演算命令Fを記憶する際に、当該情報の格納領域を確保してから演算命令を記憶する。このため、演算命令Fの読み出し時に当該情報である識別子Sが先に読み出されるので、誤り検出訂正符号による誤りの検出を、演算命令Fをすべて読み出さないで行うことができる。そのため、バッファ回路30での処理遅延を低下させ、尚且つ、演算命令Fの書き込みのための余計なバッファが不要となり、回路規模を削減することもできる。
【0070】
この実施の形態のソフトウェア処理部50は、転送処理回路10Aつまり演算命令番号取得回路20に入力された演算命令を実行可能なときに当該演算命令を取得し、当該演算命令を実行する演算命令実行部としても動作できる。これにより、転送処理装置10は、分散処理を行うことができる。演算命令番号取得回路20は、演算命令実行部としてのソフトウェア処理部50が演算命令を実行できないときに、演算命令番号を取得し、取得した演算命令番号を演算命令とともに出力する。これにより、転送処理装置10は、演算命令を実行できないときに、演算命令を他の分散コンピュータ120等に転送することができる。なお、演算命令実行部は、ソフトウェア処理部50以外の装置により構成されてもよい。演算命令実行部は、プログラムを実行するプロセッサ等により構成されればよい。
【0071】
(変形例等)
上記の実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。上記実施形態について種々の変更を施してもよい。以下、変形例を列挙するが、下記の変形例の少なくとも一部同士を矛盾しない範囲で組み合わせてもよい。
【0072】
演算命令の内部処理子に、演算命令を実行させる分散コンピュータ120の宛先アドレスが含まれてもよい。この場合、演算命令識別子に当該宛先アドレスが含まれてもよい。この場合、転送情報は、当該宛先アドレスを有する分散コンピュータ120が接続されたネットワークに接続されたポートを指定することで転送先を示す情報であってもよい。この場合、転送情報取得回路40から出力された演算命令は、当該演算命令の内部処理子が含む宛先アドレスを最終的な送信先として転送処理装置10から送信される。前記の宛先アドレスは、バッファ回路30により取得され、演算命令番号の代わり又は加えて識別子Sに含まれるようにしてもよい。演算命令番号は、演算命令Fとともに別途送信されてもよい。宛先アドレスは、演算命令の送信元と演算命令の演算の種類等とに割り当てられたものであってもよい。この場合、バッファ回路30は、例えば、テーブルを参照し、演算命令の内部処理子に含まれる送信元のアドレスと、演算命令のopcode等との組み合わせに割り当てられた宛先アドレスを取得して用いる。この場合、転送情報取得回路40からは、識別子Sも出力され、転送情報取得回路40から出力された演算命令は、当該識別子Sが含む宛先アドレスを最終的な送信先として転送処理装置10から送信される。なお、演算命令の内部処理子は、転送処理装置10による処理の過程で適宜削除されてもよい。
【0073】
演算命令の内部処理子に含まれる上記宛先アドレス、識別子Sに含ませられる上記宛先アドレス、又は、転送情報が示す宛先アドレス等を、演算命令を実行させる分散コンピュータ120内の演算装置120Bがアクセスするキャッシュメモリ、On Chipメモリ、又は、DRAMメモリ等の各種メモリ120Aのアドレスであるメモリアドレスとしてもよい。演算装置120Bは、分散コンピュータ120の例えばCPU等のプロセッサに含まれる。前記の各種メモリは、前記プロセッサの内部又は外部に設けられればよい。以上のように、上記転送情報又は演算命令が、演算命令を実行する演算装置がアクセスするメモリ120Bのメモリアドレスを宛先アドレスとして含むか、転送情報取得回路40が当該アドレスを転送情報又は演算命令とは別に識別子S等により宛先アドレスとして出力するように構成されてもよい。このような構成によれば、演算命令をメモリ120Aに一度置くので、例えば大量の演算命令の実行が必要な場合であっても柔軟で高速な演算処理が可能となる。さらに、複数の分散コンピュータ120が共有する共有メモリのアドレスを前記メモリアドレスとして指定することができ、共有メモリに演算命令(演算に使用されるデータも含む)を一度おいて使用できるので、多くの情報処理つまり演算命令の実行を的確に行うことができる。
【0074】
上記誤り検出訂正は、誤り検出だけを行う態様を含む。つまり、上記誤り検出訂正符号として誤り検出符号が使用されてもよい。誤り検出訂正の符号種類としては、どのようなものでも良い。誤り検出であれば、パリティ符号、又は、CRC等の巡回冗長検査符号が用いられてもよい。誤り検出訂正であれば、単一エラー訂正、2つエラー検知を行うSECDEDの他、リードソロモン符号が用いられてもよい。
【0075】
演算命令識別子に含まれる情報は、宛先又は送信元のアドレス、及び、優先度などのヘッダ情報の組合せであってもよい。演算命令は、先頭に8バイトの内部処理子と32ビットのRISC演算命令との構成以外の構成であってもよい。1つの演算命令は、8バイトの内部処理子に引き続き、複数の命令が連続したものであってもよい。内部処理子及び演算命令の長さは、上記実施の形態に限定されず、任意である。内部処理子は、命令の長さの情報だけではなく、連続する命令の数、ユーザID情報などを含んでもよい。内部処理子は、演算命令識別子を直接含んでもよい。上記各種の演算ないし計算は、VLAN(Virtual LAN)タグの値(優先度)、長さを用いても良く、どの数値を用いるかは任意である。
【0076】
演算命令は、RISC演算命令でなくてもよく、画像サイズ変換を行う演算命令といった大きな機能の命令であってもよい。演算命令は、標準化されていない独自の演算命令でもよい。また、演算命令は、分散コンピュータ120から通信プロトコル、例えば、httpのリクエストに格納されていても良い。演算命令は、MQTT、CoAP、QUIC、WebSocket、NATS、Kafka、REST、独自プロトコルなどの各種プロトコルで転送処理装置10に入力されてもよい。転送処理装置10から送信される演算命令も、上記同様種々のプロトコルで転送されてもよい。演算命令の転送の方向は、一方方向ではなく、双方向も可能である。また、転送処理装置10には、複数の分散コンピュータが接続されてもよい。転送処理装置10は、演算命令を中継する各種スイッチ、ネットワークカードなどであってもよい。
【0077】
ソフトウェア処理部50による第1テーブル29A又は49Aの回復は、第2テーブル29B又は49Bへのアクセスのタイミングで、行われてもよい。これにより、検索に影響を与えずに、テーブルを健全化することができる。
【0078】
エントリの誤りは、ソフトエラーに限らず、ノイズ等の様々な要因で検出される可能性がある。誤りは、複数のエントリで同時多発的に発生している場合もある。例えば、メモリの物理的な近い位置にエラー領域が波及していることもある。複数のエントリについて誤り検出があった場合、テーブル更新部52は、テーブル全体を更新するとよい。また、テーブル回復判別部51は、1つのエントリで1つの誤りを検出したら、直ちに、テーブルの回復を行うようにしてもよい。テーブルの書換えは、複数回に分けて実施されてもよい。これにより、演算命令をバッファに蓄積可能な時間内であれば、例えば、1m秒以内であれば、10Mbps程度の映像配信場合に1KB程度のバッファが有れば、リアルタイムな処理が必要な場合でも、演算遅延を最小限に抑えることができる。
【符号の説明】
【0079】
10…転送処理装置、10A…転送処理回路、20…演算命令番号取得回路、21…メモリ、22…演算命令処理部、23…テーブル処理部、24…誤り検出訂正部、29…演算命令識別子テーブル、29A…第1テーブル、29B…第2テーブル、30…バッファ回路、31…バッファメモリ制御部、32…バッファメモリ、40…転送情報取得回路、41…メモリ、42…演算命令処理部、43…テーブル処理部、44…誤り検出訂正部、49…転送情報テーブル、49A…第1テーブル、49B…第2テーブル、50…ソフトウェア処理部、51…テーブル回復判別部、52…テーブル更新部、53…テーブル処理停止/再開部、60…記憶部、110…サーバコンピュータ、120…分散コンピュータ、120A…メモリ、120B…演算装置、N…ネットワーク。
図1
図2
図3
図4
図5