JP7485086B2 - 命令処理方法及び命令処理回路 - Google Patents

命令処理方法及び命令処理回路 Download PDF

Info

Publication number
JP7485086B2
JP7485086B2 JP2022567968A JP2022567968A JP7485086B2 JP 7485086 B2 JP7485086 B2 JP 7485086B2 JP 2022567968 A JP2022567968 A JP 2022567968A JP 2022567968 A JP2022567968 A JP 2022567968A JP 7485086 B2 JP7485086 B2 JP 7485086B2
Authority
JP
Japan
Prior art keywords
instruction
identifier
error
error detection
memory
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.)
Active
Application number
JP2022567968A
Other languages
English (en)
Other versions
JPWO2022123722A1 (ja
Inventor
猛 伊藤
顕至 田仲
勇輝 有川
和彦 寺田
勉 竹谷
健 坂本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Publication of JPWO2022123722A1 publication Critical patent/JPWO2022123722A1/ja
Application granted granted Critical
Publication of JP7485086B2 publication Critical patent/JP7485086B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、分散コンピュータ等で実行される命令を処理する、命令処理方法及び命令処理回路に関する。
近年、インターネット上で仮想現実や人工知能を用いた高度なサービスが進展している。このような状況の中、高度なサービスに柔軟に対応するため、高性能なコンピュータリソースを用いてソフトウェア上で仮想的なコンピュータを構成するコンピュータの仮想化に向けた検討が進められている。このようなコンピュータの高性能化に伴い、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、及び、FPGA(Field Programmable Gate Array)といった大規模集積回路(LSI:Large Scale Integration)の微細化がますます進んでいる。このような微細化に伴い、特に、大規模集積回路上に搭載されるメモリについては、宇宙線によるソフトエラーと言われるビット反転によるビットエラーの発生が懸念されている。
このビットエラーが、メモリにバッファリングされたコンピュータの命令に対して発生すると、メモリから命令を読み出した際に、命令の一部がビット反転した命令が読み出されてしまう。このような読み出された命令のビット誤りによって、演算障害や装置故障誤検知などが発生し、コンピューティングの停止など深刻な影響へと発展する可能性が高まる。
他方、非特許文献1には、ソフトエラーに対する対処法として、TMR(Triple Modular Redundancy)法が開示されている。これは、回路を三重に冗長化することにより、多数決で決定した値を出力することにより、ソフトエラーによるビット反転による影響を回避する方法である。また、特許文献1には、このような冗長回路ではなく、装置間で相互にやり取りされるセルに冗長符号を付与することによって、誤りチェックを行い、誤ったビットを復元する方法が開示されている。
特開平9-51337号公報
ICHINOMIYA 他7名,「Fault-Injection Analysis to Estimate SEU Failure in Time by Using Frame-Based Partial Reconfiguration」, IEICE TRANS. FUNDAMENTALS, VOL.E95-A, NO.12 DECEMBER 2012,p.2347-2356
ソフトエラーは、宇宙空間でLSIを使用しない限り、頻度高く起こることはない。このため、ソフトエラーへの対処方法は、回路に大きなインパクトを与えることなく効率的に実現することが望まれる。非特許文献1及び特許文献1は、処理対象を命令とする点を開示しておらず、命令のソフトエラーへの対処に非特許文献1及び特許文献1が開示する技術を適用することは容易ないし自明ではないが、仮に非特許文献1及び特許文献1の技術を命令のソフトエラーへの対処に用いたとしても、前者のTMR法では同じ回路が3つも必要となり回路規模が大きくなってしまう。また、後者の対処法では、廃棄率は低減できるが、バッファリングが必要な全てのメモリで誤り訂正を行う処理回路及び1つのセルヘッダ乃至情報ビット専用のメモリが必要となり、回路規模が大きくなってしまう。
本発明は、小さい回路規模でソフトエラーによる悪影響を効果的に抑えることを課題とする。
上述した課題を解決するために、本発明の第1の観点に係る命令処理方法は、メモリに蓄積した命令を、読み出し指示に基づいて、前記メモリから読み出す命令処理回路が実行する命令処理方法であって、前記命令と、当該命令を識別する識別子とを前記メモリに格納するステップであり、前記識別子を、前記メモリのうち前記命令よりも読み出し順序が先の領域に格納し、前記識別子は、当該識別子の誤りを検出訂正するための誤り検出訂正符号を含む、ステップと、前記読み出し指示に基づいて前記メモリから、前記識別子及び前記命令の一部、又は、前記識別子のみを読み出し、読み出した前記識別子に含まれる前記誤り検出訂正符号に基づいて前記識別子の誤り検出を行うステップと、前記誤り検出の結果が訂正可能な誤り有りの場合に、訂正後の前記識別子を前記命令とともに出力し、前記誤り検出の結果が訂正不可能な誤り有りの場合に、前記命令を出力せずに廃棄するステップと、を備える。
上述した課題を解決するために、本発明の第2の観点に係る命令処理回路は、メモリに蓄積した命令を、読み出し指示に基づいて、前記メモリから読み出す命令処理回路であって、前記命令と、当該命令を識別する識別子とを前記メモリに格納する第1回路であり、前記識別子を、前記メモリのうち前記命令よりも読み出し順序が先の領域に格納し、前記識別子は、当該識別子の誤りを検出訂正するための誤り検出訂正符号を含む、第1回路と、前記読み出し指示に基づいて前記メモリから、前記識別子及び前記命令の一部、又は、前記識別子のみを読み出し、読み出した前記識別子に含まれる前記誤り検出訂正符号に基づいて前記識別子の誤り検出を行う第2回路と、前記誤り検出の結果が訂正可能な誤り有りの場合に、訂正後の前記識別子を前記命令とともに出力し、前記誤り検出の結果が訂正不可能な誤り有りの場合に、前記命令を出力せずに廃棄する第3回路と、を備える。
本発明によれば、小さい回路規模でソフトエラーによる悪影響を効果的に抑えることができる。
図1は、本発明の第1実施形態に係る命令処理回路の構成図である。 図2は、図1の命令処理回路が実行するバッファメモリ処理のフローチャートである。 図3は、本発明の第2実施形態に係る命令処理回路の構成図である。 図4は、図3の命令処理回路で生成される識別子の構成例を示す図である。 図5は、図3の命令処理回路で宛先情報を取得するときに参照するテーブルの構成例を示す図である。 図6は、図3のバッファメモリに命令が順次格納される様子を示す図である。 図7は、図3のバッファメモリから命令が読み出される様子を示す図である。 図8は、本発明の第2実施形態に係る命令処理回路から命令が読み出される様子を示す図である。 図9は、本発明の変形例に係る構成を示す構成図である。
以下、本発明の実施の形態に係る命令処理回路及び命令処理方法について、図面を参照して説明する。
<第1実施形態>
図1に本発明の第1実施形態に係る命令処理回路10の構成を示す。命令処理回路10は、例えば、複数の分散コンピュータにより分散処理されるソフトウェアコンポーネントを構成する命令を転送する処理を行う回路として構成されている。命令処理回路10は、FPGA等のLSIにより構成されている。ここで取り扱われる命令は、RISC演算命令であるとする。
命令処理回路10は、バッファメモリ11と、入力命令処理部12と、識別子生成部13と、バッファメモリ制御部14と、誤り検出訂正部15と、を備える。
バッファメモリ11は、命令処理回路10に入力される命令を、後述の命令の出力要求があるまでバッファリングする。バッファメモリ11は、複数の命令を受信順に順次記憶可能に構成されている。
上記各部12~15は、協働して、図2に示すバッファメモリ処理を実行するように構成されている。以下、各部12~15の構成を、バッファメモリ処理を説明しながら説明する。命令処理回路10に入力される命令は、命令処理回路10の前段において、誤り検出処理によって誤りの無いことが確認されたものであってもよい。
バッファメモリ処理では、まず、入力命令処理部12が、命令の長さを示す長さ情報と、当該命令の宛先を示す宛先情報と、を取得する(ステップS101)。ステップS101は、命令を特定し、ステップS101の後の処理を誤りなく行うため、命令と当該命令の属性(長さ及び宛先)とを確実に関連付けるための重要なステップである。
ステップS101において、入力命令処理部12は、例えば、命令のビット数をカウントすることで当該命令の長さ情報を取得する。入力命令処理部12は、命令のヘッダに格納された長さ情報を取得することで命令の長さ情報を取得してもよい。命令の宛先情報は、命令の実行先である分散コンピュータ(送信先)を特定する番号等であればよい。宛先情報は、例えば、命令に埋め込まれている当該命令の種別を示すオペコード等の種別情報に応じて予め割り当てられているものとする。入力命令処理部12は、予め記憶部に用意されたテーブル等を参照することで、命令の種別情報に対応する宛先情報を取得する。宛先情報は、命令のヘッダに格納されたものであってもよい。
その後、入力命令処理部12は、後段のステップで命令に誤りが重畳した場合に当該誤りを検出できるように、命令全体に基づいて誤り検出符号を算出し、算出した誤り検出符号を命令の末尾に付与する(ステップS102)。誤り検出符号の方式は、例えば、CRC8(Cyclic Redundancy Check 8)とする。誤り検出符号は、その他の方式のものであってもよい。また、誤り検出符号は、誤り検出訂正符号であってもよい。
その後、識別子生成部13が、命令と、当該命令の長さ及び宛先とを紐づけるため、命令の長さ情報及び宛先情報を含む固定長の識別子を生成する(ステップS103)。識別子生成部13は、固定長の識別子を用意し、当該識別子内の予め用意された所定領域に前記の長さ情報及び宛先情報を埋め込む。この埋め込みにより、命令と、ステップS101で取得された命令の長さ情報及び宛先情報と、が紐づけられる。識別子は、命令の前に配置されることで、当該命令に付与される。
その後、識別子生成部13は、識別子全体、又は、識別子に埋め込まれた命令の長さ情報及び宛先情報に対し誤り検出訂正が可能となるよう、識別子全体、又は、識別子に埋め込まれた命令の長さ情報及び宛先情報に基づいて、誤り検出訂正符号を算出する(ステップS104)。誤り検出訂正符号としては、例えば、単一エラー訂正、2つエラー検知を行うSECDED(single error correction double error detection)符号を採用できる。これにより、実際に発生するソフトエラーの誤りパターンをカバーできる。識別子生成部13は、算出した誤り検出訂正符号を識別子内の特定領域に埋め込む(ステップS104)。
ステップS105のあとは、バッファメモリ制御部14が、命令をバッファメモリ11にバッファリングすることを開始する(ステップS105)。命令のバッファリングは、ステップS102及びS103と並行して開始されてもよい。ステップS105の時点では、識別子がバッファリングされていない。このため、バッファメモリ11において、識別子が命令の先頭に配置されるよう、命令のバッファリング領域よりも、データの読み出し順序が前の領域が、識別子がバッファリングされる予約領域として確保される。バッファメモリ制御部14は、命令のバッファリングを、識別子のバッファリングの予約領域を避けて行う。
その後、バッファメモリ制御部14は、識別子の上記予約領域へのバッファリングを開始する(ステップS106)。
その後、バッファメモリ制御部14は、命令と識別子のバッファリング状態を制御監視する(ステップS107)。バッファメモリ制御部14は、ここでは、例えば命令が全てバッファリングされているか否かを監視し、全てバッファリングされていればその状態を維持し、後工程での命令の読み出し指示があるまで、命令を識別子とともにバッファメモリ11内に保持するといった制御監視を行う。
ステップS107のあと適宜のタイミングで、命令の読み出し指示がバッファメモリ制御部14に供給されると、バッファメモリ制御部14は、バッファメモリ11から少なくとも識別子を読み出す(ステップS108)。バッファメモリ11がFIFO(first in first out)方式の場合、読み出し指示により、バッファメモリ11に最初に格納された命令が、バッファメモリ制御部14により最初に読み出される。命令の前領域には識別子が格納されているため、命令が読み出される際は、当該命令に付与された識別子も読み出されることになる。この際、バッファメモリ11のビット幅が識別子のビット数より大きく、尚且つ、バッファメモリ11の一層目先頭から識別子が格納されている場合は、少なくとも、バッファメモリ11の一層目の情報の読み出しにより、識別子が全て読み出される。なお、識別子は固定長なので、識別子のみが読み出されてもよい。
その後、誤り検出訂正部15が、バッファメモリ制御部14により読み出された識別子から、当該識別子に埋め込まれている誤り検出訂正符号(SECDED符号)を取り出し、取り出した誤り検出訂正符号を用いて識別子(より詳細には識別子全体、又は、識別子に埋め込まれた命令の長さ情報及び宛先情報。以下同じ)に誤りがあるかを判別する(ステップS109)。誤りが無い場合(ステップS109;No)、識別子は正しい情報であることが担保される。この場合、バッファメモリ制御部14は、命令の残り及び当該命令の末尾に付与された誤り検出符号をバッファメモリ11から読み出し、識別子S、命令、及び、誤り検出符号をセットで出力する(ステップS110)。命令の残りは、識別子に含まれる命令の長さの情報により特定される。誤り検出符号は、固定長として予め設定されていればよい。なお、誤り検出符号の付与の際、識別子生成部13は、命令の長さの情報を、当該誤り検出符号を含めた長さを示す情報に補正してもよい。この場合、バッファメモリ制御部14は、命令の長さの情報により、命令の残り及び当該命令の末尾に付与された誤り検出符号を読み出すことができる。上記で出力された命令等は、適宜、他の分散コンピュータに転送される。
誤り検出訂正部15は、識別子について誤りを検出した場合(ステップS110;Yes)、検出したその誤りが訂正可能であるか判別する(ステップS111)。ここでは、誤り検出訂正符号をSECDED符号としているので、ソフトエラー等による識別子内のビット誤りが1箇所であれば、誤り訂正可能である。識別子内のビット誤りが2箇所以上であれば、誤りが訂正できない。
誤り検出訂正部15は、識別子の誤りが訂正可能である場合(ステップS111;Yes)、識別子の誤り訂正を行う(ステップS112)。この誤り訂正によって、識別子は、誤りのない正しい情報であることが担保される。この場合、バッファメモリ制御部14は、命令の残り及び当該命令の末尾に付与された誤り検出符号をバッファメモリ11から読み出し、訂正後の識別子S、命令、及び、誤り検出符号をセットで出力する(ステップS113)。出力された命令等は、適宜、他の分散コンピュータに転送される。
識別子の誤りが訂正不可である場合(ステップS111;No)、識別子S内の命令の長さの情報及び宛先情報には信頼性がない。特に、演算命令の長さ情報が間違っていると、バッファメモリ11に他の演算命令が格納されている場合、命令の末尾乃至誤り検出符号の末尾と他の命令の識別子の先頭との境目が不明瞭になり、バッファメモリ11から命令の残りを正確に読み出せず、他の命令まで読み出してしまう可能性もある。このため、識別子の誤りが訂正不可である場合、バッファメモリ制御部14は、バッファメモリ11をクリアすることで、現在バッファメモリ11に格納されているすべての情報、つまり、すべての識別子、誤り検出符号、及び識別子を廃棄する(ステップS114)。このとき、バッファメモリ制御部14は、バッファメモリ11から読み出し途中の命令、バッファメモリ11に格納途中の命令をクリア(廃棄)するようにしてもよい。なお、命令の長さを固定長としてもよく、この場合、バッファメモリ制御部14は、誤り訂正不可の識別子に対応する命令、誤り検出符号のみを廃棄するようしてもよい。さらに、この場合、識別子には、長さ情報が含まれなくてもよい。
本バッファメモリ処理では、バッファメモリ11が読み出される際、命令の末尾までが一度に読み出されず、バッファメモリの一層目のみが読み出され、これにより、誤り訂正符号を含む識別子が読み出される。これにより、簡易な処理及び小さい回路規模により、命令に対する誤りのない正しい情報(識別子)が得られる。
また、バッファリングの際、識別子のバッファリング領域が予約され、命令が識別子の予約領域を避けてバッファリングされるので、識別子のバッファリングが終わるまで、命令を保持しておくバッファは不要となっている。これにより、命令処理回路の回路規模が小さくなる。さらに、命令の長さ及び宛先情報を誤り訂正する簡易な処理によって、識別子に生じた誤りにより、命令の読み出しが中止になる、又は、命令の読み出しが失敗するといった不都合が抑制される。また、誤り訂正で訂正できない誤りが生じても、バッファメモリ11に蓄積された命令がクリアされることで、バッファメモリ11に蓄積された命令のみの犠牲で、他の命令への悪影響が防止される。
<第2実施形態>
図3に本発明の第2実施形態に係る命令処理回路20を示す。命令処理回路20は、優先度振り分け(QoS: Quality of Service)を行う回路として構成されている。命令処理回路20は、バッファメモリ21、PCS(Physical Coding Sublayer)/RS(Reconciliation Sublayer)22、OAC(Operation Access Control)23、及び、QOS(Quality of Service)24を備えている。バッファメモリ21は、命令処理回路20に入力される命令を一時記憶する。命令処理回路20に入力される命令には、先頭にプリアンブルが付加され、末尾に誤り検出用の符号であるOCS(Operation Check Sequence)が付加されている。バッファメモリ21にバッファリングされるときは、命令に、プリアンブルの代わりに識別子が付加される。
以下の説明では、一例として、PCS/RS22に、第1命令から第3命令までが最小の命令間ギャップ(IOG:Inter Operation Gap)にて連続的に入力され、その後、十分に時間を空けて、第四命令が入力されるものとする。命令処理回路20には命令が逐次入力される。命令内のオペコード及びオペランドは、命令の内容、又は、データの内容などに応じた長さを有する。このため、命令は、その内容(例えばRISC-Vの命令長32ビット及び64ビット)に応じて異なる長さとなる。なお、ここでは、各命令内のタグは同じ優先度であるとする。
PCS/RS22では、まず、PCSにより命令を符号化する。PCS/RS22は、符号化した命令について、次段のRSにより、プリアンブルと命令との境にあるSOD(Start Operation Delimiter)を検出し、命令及びOCSのみを次段のOAC23に転送する。
OAC23は、入力された命令の長さの特定と、命令末尾にあるOCSを用いた命令の誤り検出を行う。命令の種類等に応じて、命令を実行するコンピュータを分けるため、命令の先頭に、当該命令の宛先を特定する宛先情報を含んだ識別子を付与したい。また、識別子には、後述のように当該識別子により命令の長さを特定するために、当該命令の長さを示す長さ情報も含ませたい。このような識別子を生成するには、命令の長さを測定し、尚且つ命令の宛先を検索して、結果を識別子に埋め込まなければならない。そこで、OAC23は、入力された命令に対して、OCSにより誤り検出を行って誤りがないことを確認してから、当該命令の長さを測定する。OAC23は、命令を出力するときには、再度OCSを命令の末尾に付与する。
識別子を生成するには、命令の長さなどを特定する必要がある。OAC23が識別子を出力してから命令を出力する場合、識別子の生成まで命令及び識別子の出力が待機されることになってしまう。これを避けるため、OAC23は、識別子の生成を待たずに、OCS付きの命令をバッファメモリ21に出力する。
ここで、識別子がどのように生成されるかの一例を詳細に述べる。OAC23は、命令の長さを測定する。この測定は、第1実施形態で述べたように、命令のビット数をカウントするか、命令のヘッダに含まれる命令の長さ情報による長さの特定により行われる。OAC23は、測定した命令の長さを元に、当該長さを示す長さ情報を識別子の特定領域に埋め込む処理を行う。具体的には、図4に示すように、例えば64ビット=8バイト[63:0]長の識別子が用意される。例えば、命令長さとして、命令の長さ最大256バイトまで対応するためには、バイト単位の数値として2進数で値を割り当てるためには最小8ビットを割り当てる必要がある。例えば、識別子の[55:48]領域に長さ情報が格納される。
宛先情報については、OAC23は、例えば、図5に示すような、宛先と、宛先を特定する宛先番号からなる宛先情報と、が対応付けられたテーブルを参照する。当該テーブルは、当該OAC23内部又は外部の記憶部に記憶され、OAC23に参照される。OAC23は、入力された命令の実行先アドレス(例えば、ヘッダに埋め込まれているものとする)がDA1の場合、前記のテーブルを参照して、当該DA1に対応する宛先情報12b′000000000100を取得する。OAC23は、取得した当該宛先情報を識別子に埋め込む。命令処理回路20に接続される対向の分散コンピュータノードに割り振る命令の種類を最大4096とすると、識別子に宛先情報を含ませるには、識別子の中の最小12ビットの割り当てが必要である。この場合、例えば識別子の[43:32]領域に、命令の宛先情報が格納されればよい。
以上のように、OAC23は、命令の長さ情報及び宛先情報を当該命令の属性情報として識別子に埋め込む。更に、命令別の処理を誤りなく行うため、これらの識別子に埋め込んだ情報の中で、命令の長さ情報及び宛先情報に着目した。これらを確実に保護することで、長さ情報により、異なる命令の境界を確定し、誤りなく、命令バイ命令で確実に命令転送することができる。また、宛先情報により、命令を正確な宛先に送信できる。例えば、上記例の場合に、ソフトエラーによって識別子の宛先情報が12b′000000000100ではなく、12b′000000000101に誤ってしまったとすると、本来、宛先情報12b′000000000100の命令として処理されるはずが、宛先情報12b′000000000101の命令として処理されてしまう可能性がある。即ち、宛先情報がソフトエラーにより情報が誤ってしまうと、別の命令を誤って誤転送してしまうということになってしまう。そこで、宛先情報を保護して命令の誤送信を防止する。
命令の長さ情報又は宛先情報の誤りにより発生する誤命令処理又は誤送信を防止するためには、識別子に格納された前記の情報を保護することが必要となる。なお、特に限定するわけではないが、識別子は固定長とするとよい。理由は、識別子の長さが可変長であると、識別子が何処までなのか、命令バイ命令で判定しなければならず、識別子の長さ計測用に判定回路が追加され、回路規模が大きくなってしまうためである。識別子は、当然可変長であってもよい。
識別子の長さ情報と宛先情報とを保護するためには、誤り検出技術の適応が重要になる。誤り検出符号はいくつかあるが、この実施の形態では、宇宙線によるビット反転という発生頻度が小さいエラーを対象とするため、単一エラー訂正、2つエラー検知を行うSECDEDを採用することが回路インパクトも大きくなく好ましい。OAC23は、8バイトの識別子に基づいて計算したSECDED符号を識別子の特定領域、例えば、識別子の[23:16]に埋め込む。これにより、識別子内にソフトエラーが1ビット分発生した場合は、誤り訂正が可能となる。これにより、命令の長さ情報及び宛先情報を保護でき、後段で誤りなく命令を実行することが期待される。詳細は後述する。
上記のように、OAC23に入力された命令に基づいて生成された識別子は、図3に示すように、OAC23から、命令に遅れて出力される。なお、図3では、命令が出力された後、識別子が出力されているが、識別子の出力先を別途設けておけば、命令出力と識別子とが並行して出力されることも可能である。
以上のように、OAC23は、少なくとも命令の長さ情報及び宛先情報を含む識別子を生成するとともに、少なくとも長さ情報及び宛先情報を示すビット列をソフトエラーによるビットエラーから保護する誤り検出訂正符号を計算して識別子に埋め込む。OAC23は、これらの処理を第1命令から第4命令まで、命令が入力されるごとに逐次的に行うことになる。
ここで、OAC23による命令に対する処理について説明を付け加える。命令に付加されている誤り検出符号であるOCSは、OAC23での誤り検出のための処理に使用されたあと削除されることが多い。しかし、本実施形態のOAC23は、OCSを命令の末尾に再度付与する。OAC23が命令に対して適宜行う処理の工程で、命令の書換えが行われない場合は、OAC23に入力された誤り検出符号が再度付与される。命令の書換えが行われた場合は、OAC23は、命令に対して新た誤り検出符号を算出し、命令に付与する。このことによって、後段の命令処理において、ソフトエラーよって、例えば万が一命令が、別の命令に書き換わっていたとしても、廃棄などの処理により、後段の命令処理への影響を抑制することができる。
OAC23は、OCSを付与した第1命令~第4命令を、命令それぞれの識別子とともにバッファメモリ21に格納する。第1命令から第3命令までは、元々、最小のIFGで入力された命令であるため、図6に示すように、同じバッファメモリ21(キュー)に時間間隔を置かず連続的に格納される。各命令のバッファメモリ21への格納は、識別子よりも先に開始され、各命令は、識別子の格納領域(点線の領域参照)を空けて格納される。図6では、第1命令から第3命令までがバッファリングされた時点で、バッファメモリ21が満タンなっている。図6では、四角い外枠がバッファメモリを示しており、横のビット幅×階層数(図6では5層)がバッファメモリに蓄積可能なビット数を表す。
図3に戻り、上記説明したOAC23による処理が完了すると、QoS24により、優先制御処理が行われる。上述のように、第1命令から第4命令までは、同じ優先度の命令とする。また、第1命令から第3命令までがバッファリングされた時点で、QoS24に命令の読み出し指示がされたとする。この場合、QoS24は、バッファメモリ21の1層目の情報を読み出す。1層目の情報のみ読み出されたのは、当該情報が、命令先頭の識別子の全てを少なくとも含むのに十分な情報量を有するためであり、2層目以降は直ぐには取り出されない。これが実現できるのは、バッファメモリ21のどこから識別子を読み出しているのかという情報と、命令の先頭に付与されている識別子のビット長を予め、保持しているからである。バッファメモリの横幅を128ビット(16バイト)とし、識別子を64ビット(8バイト)とすると、1層目の読み出し位置が先頭であることから、1層目のみ読み出せば、識別子が全て読み出されることになる。QoS24は、読み出した情報の先頭から64ビット分の情報を抽出することで、識別子のみを抽出し、当該識別子に埋め込まれたSECDED符号から、識別子の誤り訂正検出を行う。QoS24は、識別子のみを読み出すようにしてもよい。
図7の例において、第1命令に付与された識別子では誤りが1箇所のみ発生しているとすると、当該識別子については誤り訂正が可能である。この場合、QoS24は、識別子に対して誤り訂正を行い、訂正後の識別子から、命令の長さ情報を抽出し、この長さ情報を元に、第1命令の残り及び第1命令の末尾に付与されているOCSを読み出す。OCSは、固定長であり、OCSの末尾は、第1命令の長さ情報に基づいて特定される。図7の例では、第1命令の残り及びOCSがバッファメモリ21の2層目から読み出されている。QoS24は、1層目からすでに読み出している第1命令の一部と、2層目から読み出した第1命令の残りとを合成し、合成した第1命令を、優先制御後の第1命令として、訂正後の識別子及び2層目から読み出した前記OCSとともに出力する。
第1命令の読み出し後は、第2命令の識別子が読み出される。図7では、2層目の途中から、3層目にかけて識別子が格納されている。ここで、バッファメモリ21における第1命令のOCSの位置は分かるので、第1命令と同様に識別子の長さが固定長8バイトであるとすると、第2命令の識別子がバッファメモリ21の2層目から3層目に渡って格納されており、当該識別子の最初と最後の位置とが分かる。このように、識別子の長さが固定長である場合、逐次的に識別子の長さを測定する必要がないため、回路規模を最小限にすることができると共に、命令処理時間を短くできるというメリットがある。
QoS24は、第2命令の識別子を読み出したあと、当該識別子に含まれるSECDED符号を用いて、当該識別子の誤り検出を行う。ここでは、第2命令の識別子に2つの誤り、つまり、DEU(double error upset)が発生している。このため、SECDED符号では誤り訂正できない。このまま、識別子の持つ命令の長さ情報を用いて、第2命令の読み出し処理を行うと、識別子のうちの長さ情報に誤りがあった場合には、第2命令と第3命令の境目を正しく算出できない。このため、QoS24は、バッファメモリ21に蓄積されているすべての命令を速やかに廃棄する処理を行う。この処理により、次のバッファすべき第4命令が来る前に、バッファに残っている第3命令が即座に廃棄される。これにより、図8に点線で示すように、第3命令及び第4命令は、QoS24から出力されない。図3及び図7の例では、第4命令が第3命令の入力タイミングから十分時間をおいて入力されているため、バッファメモリ21がクリアされてから第4命令がバッファリングされる。バッファメモリ21のクリアは、必要な回路規模も小さく、処理も単純なため、高速な処理が可能となり、第4命令が第3命令に引き続いて最小のIFGで入力されていたとしても、バッファメモリのクリア工程に影響を与えることはない。すなわち、第4命令がバッファリングされるタイミングの前にバッファメモリ21が速やかにクリアされるため、クリア時に第4命令をバッファリングするための待機用にバッファをもう一つ持つ必要がない。第4命令は、クリア後のバッファメモリ21に格納されるため、バッファメモリ21の1層目から、第4命令の識別子及び第4命令がバッファリングされる。第4命令にソフトエラーが発生していない場合、第4命令は、誤り検出後に出力される。
以上説明したように、第2実施形態によれば、ソフトエラーの発生パターンによって、命令が適切に処理されるので、ソフトエラーが発生した後の命令処理が停止することなく、また、誤転送の可能性のある命令が誤った分散コンピュータノードへ送信されることがない。
<変形例等>
上記の実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。上記実施形態について種々の変更を施してもよい。以下、変形例を列挙するが、下記の変形例の少なくとも一部同士を矛盾しない範囲で組み合わせてもよい。
上記実施の形態では、識別子は、命令の長さ情報と命令の宛先情報を含むが、命令の種類(加算、演算等)を含んでもよい。この場合、命令にソフトエラーが発生しても、識別子の内容から命令を復元することも可能で、より信頼性の高い処理が可能となる。
上記誤り検出訂正は、誤り検出だけの場合を含む。つまり、上記誤り検出訂正符号として誤り検出符号が使用されてもよい。誤り検出訂正の符号種類としては、どのようなものでも良い。誤り検出であれば、パリティ符号、又は、CRC等の巡回冗長検査符号が用いられてもよい。誤り検出訂正であれば、単一エラー訂正、2つエラー検知を行うSECDEDの他、リードソロモン符号が用いられてもよい。
命令は、RISC-VなどのCPUアーキテクチャ、RISC-Vよりも大きな機能、例えばHTTPリクエスト(POST)に含まれる命令であってもよい。命令は、HTTPリクエスト(プロトコル)に限らず、MQTT、CoAP、QUIC、WebSocket、NATS、Kafka、REST、独自プロトコルなど、様々なプロトコルで使用される命令であってもよい。
命令処理回路10又は20は、CPU、GPU等を含むLSI等であってもよい。
図9に示すように、命令処理回路10又は20は、分散処理を行う分散コンピュータ100が備えるものであってもよい。このコンピュータ100が、リソースに余剰があり、命令処理回路10又は20に入力される命令を実行できる場合、命令処理回路10又は20は、当該命令を当該コンピュータ100に実行させる(図9の(1)参照)。リソースに余剰がなく、当該コンピュータ100が当該命令を実行できない場合に、命令処理回路10又は20は、当該命令を他の分散コンピュータ(図9の(2)参照)に転送するようにしてもよい。例えば、命令処理回路10又は20は、命令処理回路10又は20が実装されたコンピュータ100のCPU等のプロセッサ100Aと通信し、入力された命令が前記プロセッサ100Aで実行可能と判別したときには、当該命令をプロセッサ100Aに送信して命令を実行させる。命令処理回路10又は20は、入力された命令が前記プロセッサ100Aで実行できない判別したときには、当該命令を他のコンピュータ110に転送してもよい。他のコンピュータ110のプロセッサ又は演算装置110Aは送信された命令を実行する。このようにすることで、命令が効率よく転送される。
識別子に含まれる宛先情報つまり命令の送信先は、コンピュータ110内の演算装置110Aがアクセスするキャッシュメモリ、On Chipメモリ、又は、DRAMメモリ等の各種メモリ110Bのアドレスであるメモリアドレスとしてもよい。演算装置110Aは、コンピュータ110の例えばCPU等のプロセッサに含まれる。前記の各種メモリは、前記プロセッサの内部又は外部に設けられればよい。このような構成によれば、演算命令をメモリ110Bに一度置くので、例えば大量の演算命令の実行が必要な場合であっても柔軟で高速な演算処理が可能となる。さらに、複数のコンピュータ110が共有する共有メモリ110Bのアドレスを前記メモリアドレスとして指定することができ、共有メモリに演算命令(演算に使用されるデータも含む)を一度おいて使用できるので、多くの情報処理つまり演算命令の実行を的確に行うことができる。
<本明細書が開示する構成等>
本明細書が開示する構成、特に、上記第1実施形態、第2実施形態、及び変形例を一例とする構成は、以下のようにも記載され得る。
メモリ(例えば、バッファメモリ11又は21)に蓄積した命令を、読み出し指示に基づいて、前記メモリから読み出す命令処理回路(例えば、命令処理回路10又は20)が実行する命令処理方法であって、前記命令と、当該命令を識別する識別子とを前記メモリに格納するステップであり、前記識別子を、前記メモリのうち前記命令よりも読み出し順序が先の領域に格納し、前記識別子は、当該識別子の誤りを検出訂正するための誤り検出訂正符号を含む、ステップ(例えば、図2のステップS105及びS106、又は、図6の格納処理)と、前記読み出し指示に基づいて前記メモリから、前記識別子及び前記命令の一部、又は、前記識別子のみを読み出し、読み出した前記識別子に含まれる前記誤り検出訂正符号に基づいて前記識別子の誤り検出を行うステップ(例えば、図2のステップS109及びS111、又は、図3のQoS24による誤り検出)と、前記誤り検出の結果が訂正可能な誤り有りの場合に、訂正後の前記識別子を前記命令とともに出力し、前記誤り検出の結果が訂正不可能な誤り有りの場合に、前記命令を出力せずに廃棄するステップ(例えば、図2のステップS112~S114、又は、図7の第1命令等)と、を備える命令処理方法。
メモリ(例えば、バッファメモリ11又は21)に蓄積した命令を、読み出し指示に基づいて、前記メモリから読み出す命令処理回路(例えば、命令処理回路10又は20)であって、前記命令と、当該命令を識別する識別子とを前記メモリに格納する第1回路であり、前記識別子を、前記メモリのうち前記命令よりも読み出し順序が先の領域に格納し、前記識別子は、当該識別子の誤りを検出訂正するための誤り検出訂正符号を含む、第1回路(例えば、バッファメモリ制御部14、又は、OAC23)と、前記読み出し指示に基づいて前記メモリから、前記識別子及び前記命令の一部、又は、前記識別子のみを読み出し、読み出した前記識別子に含まれる前記誤り検出訂正符号に基づいて前記識別子の誤り検出を行う第2回路(例えば、バッファメモリ制御部14及び誤り検出訂正部15、又は、QoS24)と、前記誤り検出の結果が訂正可能な誤り有りの場合に、訂正後の前記識別子を前記命令とともに出力し、前記誤り検出の結果が訂正不可能な誤り有りの場合に、前記命令を出力せずに廃棄する第3回路(例えば、バッファメモリ制御部14及び誤り検出訂正部15、又は、QoS24)と、を備える命令処理回路。
上記各構成によれば、識別子に対する誤り検出の検出結果に応じて、識別子の訂正及び命令の出力、又は、命令のメモリからの削除を行うので、訂正後の識別子によれば命令を正しく識別でき、命令のメモリからの削除によれば誤った識別子により誤って識別された命令(例えば、誤った長さの命令、誤った宛先の命令)を出力することが防止されるので、ソフトエラーによる悪影響が効果的に抑えられる。そして、上記構成によれば、命令全体を読み出さずに誤り検出訂正を行うので、命令全体を保持する必要がなく、回路規模が大きくならない。以上から、上記構成によれば、小さい回路規模でソフトエラーによる悪影響を効果的に抑えることができるとの効果が得られる。
10…命令処理回路、11…バッファメモリ、12…入力命令処理部、13…識別子生成部、14…バッファメモリ制御部、15…誤り検出訂正部、20…命令処理回路、21…バッファメモリ、22…PCS/RS、入力命令処理部、13…識別子生成部、14…バッファメモリ制御部、15…誤り検出訂正部、23…OCS、24…QoS、100…コンピュータ、100A…プロセッサ、110…他のコンピュータ、110A…プロセッサ又は演算装置、110B…メモリ。

Claims (6)

  1. メモリに蓄積した命令を、読み出し指示に基づいて、前記メモリから読み出す命令処理回路が実行する命令処理方法であって、
    前記命令と、当該命令を識別する識別子とを前記メモリに格納するステップであり、前記識別子を、前記メモリのうち前記命令よりも読み出し順序が先の領域に格納し、前記識別子は、当該識別子の誤りを検出訂正するための誤り検出訂正符号を含む、ステップと、
    前記読み出し指示に基づいて前記メモリから、前記識別子及び前記命令の一部、又は、前記識別子のみを読み出し、読み出した前記識別子に含まれる前記誤り検出訂正符号に基づいて前記識別子の誤り検出を行うステップと、
    前記誤り検出の結果が訂正可能な誤り有りの場合に、訂正後の前記識別子を前記命令とともに出力し、前記誤り検出の結果が訂正不可能な誤り有りの場合に、前記命令を出力せずに廃棄するステップと、を備え
    前記識別子は、前記命令の宛先情報を含み、
    前記宛先情報は、前記命令処理回路が実装されたコンピュータとは異なる他のコンピュータの演算装置がアクセスするメモリのアドレスである、
    命令処理方法。
  2. 前記識別子は、前記命令の長さ情報及び前記命令の宛先情報を含む、
    請求項1に記載の命令処理方法。
  3. 前記命令の末尾には、前記命令の誤りを検出するための誤り検出符号が付与される、
    請求項1又は2に記載の命令処理方法。
  4. 前記誤り検出訂正符号は、単一エラー訂正、2つエラー検知を行うSECDED(Single Error Correction Double Error Detection)符号である、
    請求項1から3のいずれか1項に記載の命令処理方法。
  5. 前記命令処理回路を備えるコンピュータが前記命令を実行できる場合には、当該命令を前記コンピュータに実行させるステップと、
    前記コンピュータが前記命令を実行できない場合には、当該命令を他のコンピュータに転送するステップと、をさらに備える、
    請求項1から4のいずれか1項に記載の命令処理方法。
  6. メモリに蓄積した命令を、読み出し指示に基づいて、前記メモリから読み出す命令処理回路であって、
    前記命令と、当該命令を識別する識別子とを前記メモリに格納する第1回路であり、前記識別子を、前記メモリのうち前記命令よりも読み出し順序が先の領域に格納し、前記識別子は、当該識別子の誤りを検出訂正するための誤り検出訂正符号を含む、第1回路と、
    前記読み出し指示に基づいて前記メモリから、前記識別子及び前記命令の一部、又は、前記識別子のみを読み出し、読み出した前記識別子に含まれる前記誤り検出訂正符号に基づいて前記識別子の誤り検出を行う第2回路と、
    前記誤り検出の結果が訂正可能な誤り有りの場合に、訂正後の前記識別子を前記命令とともに出力し、前記誤り検出の結果が訂正不可能な誤り有りの場合に、前記命令を出力せずに廃棄する第3回路と、を備え、
    前記識別子は、前記命令の宛先情報を含み、
    前記宛先情報は、前記命令処理回路が実装されたコンピュータとは異なる他のコンピュータの演算装置がアクセスするメモリのアドレスである、
    命令処理回路。
JP2022567968A 2020-12-10 2020-12-10 命令処理方法及び命令処理回路 Active JP7485086B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/046028 WO2022123722A1 (ja) 2020-12-10 2020-12-10 命令処理方法及び命令処理回路

Publications (2)

Publication Number Publication Date
JPWO2022123722A1 JPWO2022123722A1 (ja) 2022-06-16
JP7485086B2 true JP7485086B2 (ja) 2024-05-16

Family

ID=81973479

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022567968A Active JP7485086B2 (ja) 2020-12-10 2020-12-10 命令処理方法及び命令処理回路

Country Status (2)

Country Link
JP (1) JP7485086B2 (ja)
WO (1) WO2022123722A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009301462A (ja) 2008-06-17 2009-12-24 Fujitsu Ltd メモリプールへのデータ転送方法及び装置
JP2011209905A (ja) 2010-03-29 2011-10-20 Sony Corp 命令フェッチ装置、プロセッサ、および、プログラムカウンタ加算制御方法
JP2020532780A (ja) 2017-08-11 2020-11-12 グーグル エルエルシー チップ上に常駐するパラメータを用いたニューラルネットワークアクセラレータ

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009301462A (ja) 2008-06-17 2009-12-24 Fujitsu Ltd メモリプールへのデータ転送方法及び装置
JP2011209905A (ja) 2010-03-29 2011-10-20 Sony Corp 命令フェッチ装置、プロセッサ、および、プログラムカウンタ加算制御方法
JP2020532780A (ja) 2017-08-11 2020-11-12 グーグル エルエルシー チップ上に常駐するパラメータを用いたニューラルネットワークアクセラレータ

Also Published As

Publication number Publication date
WO2022123722A1 (ja) 2022-06-16
JPWO2022123722A1 (ja) 2022-06-16

Similar Documents

Publication Publication Date Title
TWI465897B (zh) 記憶體模組之錯誤檢查與校正系統以及方法
US8407478B2 (en) Control message signature for device control
US10901838B2 (en) Predictive caching for check word snooping in high performance ficon
US9244759B2 (en) Error recovery to enable error-free message transfer between nodes of a computer network
JP7303408B2 (ja) 欠陥検出を備えるエラー補正ハードウェア
US20080133981A1 (en) End-to-end data integrity protection for pci-express based input/output adapter
US20100088572A1 (en) Processor and error correcting method
US6823476B2 (en) Mechanism to improve fault isolation and diagnosis in computers
JP2008165449A (ja) エラー訂正コード生成方法、およびメモリ制御装置
US8261134B2 (en) Error management watchdog timers in a multiprocessor computer
US8255601B2 (en) Transmitting system, apparatus, and method
Yu et al. Error control integration scheme for reliable NoC
JP7485086B2 (ja) 命令処理方法及び命令処理回路
US11726665B1 (en) Memory extension with error correction
US20100162066A1 (en) Acceleration of header and data error checking via simultaneous execution of multi-level protocol algorithms
CN102710530B (zh) 可配置片上网络容错方法
US20030110422A1 (en) Method and system for detecting dropped micro-packets
JP2006260139A (ja) エラー検出訂正装置の制御方法、エラー検出訂正装置、情報処理システム、エラー検出訂正装置の制御プログラム、データ処理装置
US20180267866A1 (en) Targeted recovery process
JPH0375834A (ja) パリティの置換装置及び方法
US8769253B2 (en) Fibre channel input/output data routing system and method
JP2010009327A (ja) 照合システム
US20240045674A1 (en) Transfer Processing Device
US9720764B2 (en) Uncorrectable memory errors in pipelined CPUs
TWI789453B (zh) 記憶體和操作該記憶體的方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230331

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240318

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: 20240402

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240415

R150 Certificate of patent or registration of utility model

Ref document number: 7485086

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150