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

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

▶ 株式会社デンソーの特許一覧

<>
  • 特許-プロセッサ及びエラー検出方法 図1
  • 特許-プロセッサ及びエラー検出方法 図2
  • 特許-プロセッサ及びエラー検出方法 図3
  • 特許-プロセッサ及びエラー検出方法 図4
  • 特許-プロセッサ及びエラー検出方法 図5
  • 特許-プロセッサ及びエラー検出方法 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-02
(45)【発行日】2024-12-10
(54)【発明の名称】プロセッサ及びエラー検出方法
(51)【国際特許分類】
   G06F 9/30 20180101AFI20241203BHJP
   G06F 9/38 20180101ALI20241203BHJP
   G06F 11/10 20060101ALI20241203BHJP
【FI】
G06F9/30 380Z
G06F9/38 380X
G06F9/30 310A
G06F11/10 604
【請求項の数】 5
(21)【出願番号】P 2020042171
(22)【出願日】2020-03-11
(65)【公開番号】P2021144426
(43)【公開日】2021-09-24
【審査請求日】2023-03-08
(73)【特許権者】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(74)【代理人】
【識別番号】100113549
【弁理士】
【氏名又は名称】鈴木 守
(74)【代理人】
【識別番号】100115808
【弁理士】
【氏名又は名称】加藤 真司
(74)【代理人】
【識別番号】100169199
【弁理士】
【氏名又は名称】石本 貴幸
(72)【発明者】
【氏名】沈 靖
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2005-038420(JP,A)
【文献】特開2006-209374(JP,A)
【文献】特開2013-196466(JP,A)
【文献】米国特許出願公開第2018/0121273(US,A1)
【文献】@msyksphinz,GoogleもNVIDIAも注目しているARM時代の「弱い者の味方」 オープンソースCPU「RISC-V」の研究,Interface 第45巻 第1号 ,日本,CQ出版株式会社 CQ Publishing Co.,Ltd.,2019年01月01日,第45巻 第1号,164~170,CSDBコード CSND201900194021、【ISSN】0387-9569
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/30
G06F 9/38
G06F 11/10
(57)【特許請求の範囲】
【請求項1】
メモリから入力された命令に応じた処理を行う一つの処理手段(14)と、
前記処理手段の後段に設けられて、前記処理手段のエラーを検出し、エラー検出の実行と不実行とが切り替えられるECC回路(16)と、
を備え、
前記ECC回路によるエラー検出の実行と不実行との切り替えは、前記処理手段に実行させる処理を示す命令毎に定義され、
前記メモリと前記処理手段との間には、前記メモリから出力されるデータのエラー検出を実行する検出手段を備えない、
プロセッサ(10)。
【請求項2】
メモリから入力された命令に応じた処理を行う一つの処理手段と、
前記処理手段で行われた複数の同じ処理の結果を比較することによりエラーを検出し、エラー検出の実行と不実行とが切り替えられるエラー検出手段(20)と、
を備え、
前記エラー検出手段によるエラー検出の実行と不実行との切り替えは、前記処理手段に実行させる処理を示す命令毎に定義され、
前記メモリと前記処理手段との間には、前記メモリから出力されるデータのエラー検出を実行する検出手段を備えない、
プロセッサ。
【請求項3】
RISC-Vにおける命令セットの拡張用フィールドに、前記エラー検出手段によるエラー検出の実行又は不実行が定義される、請求項2に記載のプロセッサ。
【請求項4】
メモリから入力された命令に応じた処理を行う一つの処理手段と、前記処理手段の後段に設けられて、前記処理手段のエラーを検出し、エラー検出の実行と不実行とが切り替えられるECC回路と、を備え、前記メモリと前記処理手段との間には、前記メモリから出力されるデータのエラー検出を実行する検出手段を備えないプロセッサのエラー検出方法であって、
入力された命令に応じた処理を前記処理手段が行う第1工程と、
前記処理手段が実行する処理に応じて、前記第1工程が終了した後に前記ECC回路がエラー検出を実行する第2工程と、
を有し、
前記第2工程によるエラー検出の実行と不実行は、前記処理手段に実行させる処理を示す命令毎に定義される、
エラー検出方法。
【請求項5】
メモリから入力された命令に応じた処理を行う一つの処理手段と、前記処理手段で行われた複数の同じ処理の結果を比較することによりエラーを検出するエラー検出手段と、を備え、前記メモリと前記処理手段との間には、前記メモリから出力されるデータのエラー検出を実行する検出手段を備えないプロセッサのエラー検出方法であって、
入力された命令に応じた処理を前記処理手段が行う第1工程と、
前記処理手段が実行する処理に応じて、前記第1工程が終了した後に前記エラー検出手段がエラー検出を実行する第2工程と、
を有し、
前記第2工程によるエラー検出の実行と不実行は、前記処理手段に実行させる処理を示す命令毎に定義される、
エラー検出方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プロセッサ及びエラー検出方法に関する。
【背景技術】
【0002】
メモリを搭載しているプロセッサにおいて、特許文献1に開示されているように、メモリの異常を検出する誤り検出訂正(ECC:Error Checking and Correcting)が広く行われている。
【0003】
例えば、特許文献1には、CPU及びメモリを備える演算ユニットと、メモリの異常を検出するECCであるメモリ異常検出部と、を備える電子制御装置が開示されている。このメモリとメモリ異常検出部とは、バスを介してデータをやり取りしており、CPUによるメモリへのデータの読み出し及び書き込みは、メモリ異常検出部11Eを介して実行される。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2018-10362号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ここで、図6は、メモリ112からの命令に応じた処理をパイプライン制御回路114が行うプロセッサ100である。従来では、図6に示されるように、メモリ112とパイプライン制御回路114との間にECC回路116が配置され、ECC回路116はメモリ112に存在する故障(ECCエラー)を検出する。一方、パイプライン制御回路114の故障は、二重化されたパイプライン制御回路114からの出力を比較器120で比較することで検出される。
【0006】
しかしながら、このような従来の構成では、パイプライン制御回路114を二重化するため、回路規模が増加する。また、従来の構成では、ECC回路116によってメモリ112のエラー検出を行った後にパイプライン制御回路114に対するエラー検出処理を行うため、パイプライン制御回路114における処理のタイミングが悪くなる場合がある。さらに、速い処理速度を要求される処理に対してエラー検出を行うと要求される処理速度を満たさない可能性もある。
【0007】
本発明は上記背景に鑑み、プロセッサに生じるエラーの検出をより簡易な構成でより適切に行うことができる、プロセッサ及びエラー検出方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明は上記課題を解決するために以下の技術的手段を採用する。特許請求の範囲及びこの項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示す一例であって、本発明の技術的範囲を限定するものではない。
【0009】
本発明の一態様のプロセッサ(10)は、入力された命令に応じた処理を行う処理手段(14)と、前記処理手段のエラーを検出するエラー検出手段(16)と、を備え、前記エラー検出手段は、前記処理手段が実行する処理に応じて、前記処理手段に対するエラー検出の実行と不実行とが切り替えられ、前記エラー検出手段によるエラー検出の実行と不実行との切り替えは、前記処理手段に実行させる処理を示す命令毎に定義される。
【発明の効果】
【0010】
本発明によれば、プロセッサに生じるエラーの検出をより簡易な構成でより適切に行うことができる。
【図面の簡単な説明】
【0011】
図1】第1実施形態のプロセッサの概略構成図である。
図2】第1実施形態のパイプライン制御回路の命令コードを示す模式図である。
図3】第1実施形態のプロセッサで実行される命令処理の流れを示すフローチャートである。
図4】第2実施形態のプロセッサの概略構成図である。
図5】第2実施形態のプロセッサで実行される命令処理の流れを示すフローチャートである。
図6】従来のECC回路が備えられるプロセッサの概略構成図である。
【発明を実施するための形態】
【0012】
以下、図面を参照して本発明の実施形態を説明する。なお、以下に説明する実施形態は、本発明を実施する場合の一例を示すものであって、本発明を以下に説明する具体的構成に限定するものではない。本発明の実施にあたっては、実施形態に応じた具体的構成が適宜採用されてよい。
【0013】
(第1実施形態)
図1は、本実施形態のプロセッサ10の概略構成図である。本実施形態のプロセッサ10は、メモリ12、パイプライン制御回路14、ECC回路16、及びレジスタ18を備える。また、本実施形態のプロセッサ10は、命令セットアーキテクチャの一例として、RISC-Vが適用される。
【0014】
メモリ12には、データやECCコード等が記憶されており、これらは読み出されてパイプライン制御回路14による処理で用いられ、その処理結果がレジスタ18に記憶される。
【0015】
パイプライン制御回路14は、入力された命令(以下「命令コード」ともいう。)に応じた処理(タスク)を行う処理手段の一例である。本実施形態のパイプライン制御回路14は、処理要素である命令実行ユニットが直列に連結され、先の命令実行ユニットの出力を次の命令実行ユニットの入力とすることで、複数の命令実行ユニットが並列処理を行う。
【0016】
図1では、命令実行ユニットとして、命令フェッチ14A、命令デコーダ14B、ALU(Arithmetic Logic Unit)14Cを備えるが、これは一例であり、パイプライン制御回路14には、加算や減算、乗算等を行うための他の命令実行ユニットも備えられている。
【0017】
ECC回路16は、パイプライン制御回路14の後段に設けられるハードウェアであり、パイプライン制御回路14及びメモリ12の何れかに発生したエラーを検出する。本実施形態のECC回路16は、パイプライン制御回路14が実行する処理に応じて、パイプライン制御回路14に対するエラー検出の実行と不実行とが切り替えられる。
【0018】
本実施形態のECC回路16によるエラー検出の実行と不実行との切り替えは、パイプライン制御回路14に実行させる処理を示す命令コード毎に定義される。図2は、本実施形態の命令コードの一例を示す模式図である。
【0019】
図2に示される命令コードは、メモリ12の“rs1+imm”番地の内容(データ)をレジスタ18にロードするための命令(Memrory[rs1+imm] → rd)であり、通常命令コードとECC付き命令コードとを示している。
【0020】
通常命令コードとECC付き命令コードとは、図2に示されるように、一例として、下線部分が異なっている。そして、この異なる部分が、パイプライン制御回路14に対するエラー検出の実行と不実行とを定義する部分であり、本実施形態ではRISC-Vにおける命令セットの拡張用フィールド(Custom-0 Field)によって定義される。すなわち、ECC付き命令コードとは、パイプライン制御回路14への処理命令と共に、ECC回路16によるエラー検出の実行命令も含んでいる。これにより、エラー検出の実行と不実行との切り替え指示がより簡略化される。
【0021】
このように本実施形態のECC回路16は、命令コードがECC付き命令コードである場合に有効となる一方、命令コードが通常命令コードである場合は無効となり、パイプライン制御回路14に対するエラー検出の実行と不実行とが切り替えられる。
【0022】
なお、エラー検出を必要とする命令コードは、機能安全を要求される処理を行うためのものである一方、エラー検出を必要としない命令コードは、例えば、機能安全よりも処理速度を要求される処理を行うためのものである。このように、命令コードをECC付きとするか通常とするかは、パイプライン制御回路14が実行する処理内容によって異なるものとされる。従って、本実施形態のプロセッサ10は、処理内容に応じてエラー検出を適切に行える。
【0023】
また、ECC回路16は、パイプライン制御回路14の後段に備えられるため、メモリ12にエラーが生じた場合であっても、パイプライン制御回路14にエラーが生じた場合であっても、当該エラーの検出が可能である。このため、メモリ12とパイプライン制御回路14との間にECC回路16を設け、パイプライン制御回路14を二重化する場合に比べて、プロセッサ10の回路規模を小さくできる。
【0024】
図3は、本実施形態のプロセッサ10で実行される命令処理の流れを示すフローチャートである。
【0025】
まず、ステップS100では、メモリ12から命令コードがパイプライン制御回路14に出力される。
【0026】
次のステップS102では、パイプライン制御回路14が命令コードに基づく処理を実行する。パイプライン制御回路14による処理が終了すると、命令コード及びパイプライン制御回路14による処理結果がパイプライン制御回路14を経てECC回路16に入力される。
【0027】
そして、次のステップS106では、入力された命令コードがECC付き命令コードであるか否かをECC回路16が判定し、肯定判定の場合はステップS106へ移行する。一方で、否定判定の場合は、ECC回路16によるエラー検出が行われることなく、パイプライン制御回路14による処理結果がレジスタ18に記憶され、本命令処理は終了する。
【0028】
ステップS106では、パイプライン制御回路14の処理結果に基づいてECC回路16がエラー検出を行い、そのエラー検出結果を出力して本命令処理を終了する。なお、ECC回路16は、エラーを検出した場合にのみエラー信号を出力する一方、エラーを検出しなかった場合には何ら信号を出力しなくてもよい。
【0029】
以上説明したように、本実施形態のプロセッサ10は、パイプライン制御回路14への命令にECC回路16によるエラー検出の実行命令が含まれている場合、ECC回路16は、パイプライン制御回路14による処理が終了した後にパイプライン制御回路14に対するエラー検出を実行する。
【0030】
すなわち、パイプライン制御回路14が実行する処理内容によっては、パイプライン制御回路14に対するエラー検出を不要又はエラー検出の実行が好ましくない場合がある。このようなことを想定して、本実施形態のプロセッサ10は、パイプライン制御回路14が実行する処理に応じてECC回路16の有効、無効を切り替えるので、より簡易な構成でより適切に行うことができる。
【0031】
(第2実施形態)
以下、本発明の第2実施形態について説明する。
【0032】
図4は、本第2実施形態に係るプロセッサ10の構成を示す。なお、図4における図1と同一の構成部分については図1と同一の符号を付して、その説明を省略する。
【0033】
本実施形態のプロセッサ10は、パイプライン制御回路14で行われた複数の同じ処理の結果を比較する比較部20を備える。すなわち、比較部20は、パイプライン制御回路14に生じたエラーを検出するエラー検出手段として機能する。なお、本実施形態の比較部20は、一例として、ソフトウェア処理により実行されるものである。
【0034】
本実施形態のプロセッサ10は、命令コードがECC付き命令コードである場合に、パイプライン制御回路14が命令コードに基づいて同じ処理を複数回行い、その処理結果を比較部20が比較する。そして、複数の処理結果が同じ場合には、エラーは生じておらず、複数の処理結果が異なる場合にエラーが生じているとしてエラー信号を出力する。
【0035】
図5は、本実施形態のプロセッサ10で実行される命令処理の流れを示すフローチャートである。
【0036】
まず、ステップ200では、メモリ12から命令コードがパイプライン制御回路14に出力される。
【0037】
次のステップ202では、命令コードがECC付き命令コードであるか否かが判定され、肯定判定の場合はステップ208へ移行し、否定判定の場合はステップ206へ移行する。
【0038】
ステップ206では、パイプライン制御回路14が命令コードに基づく処理を実行し、処理結果はレジスタ18に記憶され、本命令処理は終了する。すなわち、ステップ202で否定判定となった場合には、エラー検出は行われない。
【0039】
一方、ステップ202で肯定判定となった場合に移行するステップ208では、パイプライン制御回路14が命令コードに基づく1回目の処理を行う。この1回目の処理結果は、比較部20に出力される。
【0040】
次のステップ210では、パイプライン制御回路14が命令コードに基づく2回目の処理を行い、2回目の処理結果も比較部20に出力される。
【0041】
次のステップ212では、1回目の処理結果と2回目の処理結果とを比較部20が比較し、本命令処理は終了する。なお、比較部20による比較結果が異なる場合は、パイプライン制御回路14にエラーが生じているとして、比較部20はエラー信号を出力する。一方、比較部20による比較結果が同じ場合は、パイプライン制御回路14にエラーが生じていないので、比較部20は信号を出力しない、又はエラーが生じていないことを示す信号を出力する。
【0042】
なお、本実施形態では、パイプライン制御回路14で同じ処理を2回行った結果を比較することで、エラーの有無を検出する形態について説明したが、本実施形態はこれに限定されない。
【0043】
例えば、ECC付き命令コードに基づく処理をパイプライン制御回路14が備える他の命令実行ユニットでも実行し、その実行結果を比較部20が比較することでエラー検出を行ってもよい。例えば、パイプライン制御回路14が命令実行ユニットとして複数の加算器や減算器、乗算器等を備えている場合がある。このような場合、同じ演算命令を異なる加算器や減算器、乗算器等を用いて複数回行い、複数回の演算結果を比較部20が比較する。これにより、演算を行った命令実行ユニットの何れかにエラー(故障)が生じていた場合には比較結果が異なるので、比較部20からエラー信号が出力される。
【0044】
また、この他にも、ECC付き命令コードに基づくパイプライン制御回路14への入力内容や処理結果を反転したデータをバッファに記憶させ、バッファに記憶させたデータに基づいて再びパイプライン制御回路14が処理を実行し、この処理結果とバッファに記憶したデータとを比較部20が比較することでエラー検出が行われてもよい。
【0045】
以上、本発明を、上記実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。発明の要旨を逸脱しない範囲で上記実施形態に多様な変更又は改良を加えることができ、該変更又は改良を加えた形態も本発明の技術的範囲に含まれる。また、上記第1実施形態と第2実施形態とが組み合わされてもよい。
【0046】
上記実施形態では、プロセッサ10のアーキテクチャとしてRISC-Vを適用し、RISC-Vにおける命令セットの拡張用フィールドによってエラー検出の実行と不実行を定義する形態について説明したが、本発明は、これに限定されるものではない。命令セットによってエラー検出の実行と不実行を定義可能であれば、他のアーキテクチャが用いられてもよい。
【0047】
また、上記実施形態では、エラー検出の実行と不実行との切り替えは、パイプライン制御回路14への命令コード毎に定義される形態について説明したが、本発明は、これに限定されるものではない。例えば、プロセッサ10の処理モードに応じて、エラー検出の実行と不実行が切り替えられてもよい。すなわち、プロセッサ10の処理モードとして、エラー検出を実行するモードと不実行のモードと設定可能とされる。
【0048】
また、上記実施形態では、プロセッサ10としてパイプライン処理を行うものを適用する形態について説明したが、本発明は、これに限定されるものではなく、プロセッサ10は必ずしもパイプライン処理を行うものでなくてもよい。例えばプロセッサ10が複数のCPU(Central Processing Unit)を備える形態としてもよい。この場合、第2実施形態のように同じ処理を複数行い、その処理結果を比較部20が比較する場合には、複数のCPUで実行された処理の処理結果を比較部20が比較する。
【符号の説明】
【0049】
10・・・プロセッサ、14・・・パイプライン制御回路、16・・・ECC回路、
20・・・比較部
図1
図2
図3
図4
図5
図6