Posts Issued in October, 2022

RISC-Vプロセッサの設計

posted by sakurai on October 17, 2022 #531

「はじめてのCPU自作」という本を購入したので、これを参考にRISC-Vプロセッサを設計します。ただし、この本ではChiselベースとなっていますが、本稿ではBSVベースとします。またパイプラインプロセッサの経験があるため、最初からパイプラインプロセッサを設計します。

さて、この本を読んでいたらChisel(だかScalaだか)にはBitpatという便利な機能があるようです。

図%%.1
図531.1 ChiselのBitpat関数

命令デコーダを書くのに便利そうなので、BSVにもないのか調べたら、GithubにBitpatという似たようなものがありました。これはAlexandre Joannouさんが作成されたものであり、Readmeには以下のように書いています。

BitPat BitPat is a bit-string pattern matching library for Bluespec, inspired by Morten Rhiger's "Type-Safe Pattern Combinators".

BSVにおいてのパターンマッチライブラリとのことです。便利そうなのでRISC-Vの命令デコーダに採用することにします。


左矢前のブログ 次のブログ右矢

PMHFの誤解 (10)

posted by sakurai on October 14, 2022 #530

故障分類フローでの検証 (続)

前稿で規格の故障分類フローの箱(p)まで見たので、その続きを確認します。

図172.1
図172.1 Part 10故障分類フローチャート(再掲)
次の箱は(q)で、

Fraction of faults that the safety mechanism prevents from directly violating the safety goal?

安全機構が安全目標に直接違反することを防いだフォルトの割合?

とあります。ここに来たフォールトはVSGを起こします。ここから右と下の枝の違いはSMがそれを防いだかどうか(ゼロイチではなく割合)です。

VSGを防げない部分の割合を故障率$\lambda_\text{FMi,PVSG}$にかけて下の箱(r)、(s)へ移ります。これが残存フォールト$\lambda_\text{FMi,RF}$の箱(s)です。ということで、直接侵害する故障のうち、安全機構でカバーされない部分は残存フォールトだという結論です。マルチプルポイントフォールトではありません。

被引用論文の調査

ここで、「研究成果報告書」の引用元論文であるPMHF式の誤り論文$\dagger$を再度確認したところ、そこにも同じ図526.1の表が有り、全てMPFと分類されていました。そのため元論文$\dagger$から表を引き写したための誤りと判明しました。当該箇所を引用すれば、

Note that each fundamental building block in our exemplary safety microprocessor is protected with SM. This causes every hardware failure mode is classified as MPF. As the result, the summation of the single-point fault and the residual fault is zero.

各基本構成要素はSMで保護されている。 このため、すべてのハードウェア故障モードがMPFに分類される。その結果、一点故障と残留故障の和はゼロになる。

とあり、結論として元論文$\dagger$の2個目の誤りがそのまま引き継がれたようです。まとめれば、元論文$\dagger$には

  1. PMHF式のDPF項を過剰に見積もる(故障率が2乗されていない)誤り
  2. 故障分類において残存フォールトを全てマルチプルポイントフォールトと勘違いする誤り

の二重の誤りが存在しており、それが「研究成果報告書」をカスケード故障させたということになります。元の誤りは罪深く、その引用だけでも4~5本ほどあり、さらに今後孫引きされることを考えると、増殖する害虫を見るようで憂慮するばかりです。


$\dagger$Y. Chang, L. Huang, H. Liu, C. Yang and C. Chiu, "Assessing automotive functional safety microprocessor with ISO 26262 hardware requirements," Technical Papers of 2014 International Symposium on VLSI Design, Automation and Test, Hsinchu, 2014, pp. 1-4, doi: 10.1109/VLSI-DAT.2014.6834876.


左矢前のブログ 次のブログ右矢

PMHFの誤解 (9)

posted by sakurai on October 13, 2022 #529

故障分類フローでの検証

念のため残存フォールトとなるかどうか、過去記事でも解説した故障分類フローを用いて確認します。

図171.1
図171.1 Part 10故障分類フローチャート(再掲)

図172.1の上方の箱(k)において、

Fraction of faults that in absence of a safety mechanism have the potential to dicrectry violated the safety goal?

安全機構が無い場合、安全目標に違反する可能性のある故障の割合は?

この表現が誤解の元かもしれませんが「安全機構が無い場合」とは、安全機構が配備されていない場合ではありません。安全機構を仮に無いものとすることを示しています。実はこの箱(k)でやりたいのは主機能か、安全機構かの見極めです。

もし安全機構の配備であれば、安全目標を直接侵害せず(no potential)、全てのエレメントが安全機構と判定されてしまうので、仮に安全機構を取り除いて考えます。そうすると、主機能であれば安全機構が配備されていても、仮に無いものと考えると安全目標を直接侵害するため、下の箱(l)に移ります。

このように、先の引用(k)の"in absence of a safety mechanism"が安全機構が無い場合と間違い易いのですが、安全機構の有無を判断するのは次のひし形の箱(m)です。

Are there safety mechanisms in place to control faults for at least one failure mode of the element (yes/no)?

エレメントの少なくとも1つの故障モードに対して、故障を制御する安全機構があるか(yes/no)?

ここでは安全機構の配備の有無を聞いています。これで分かるように、もし箱(k)が安全機構の有無であって、無い場合に下のひし形の箱(m)に来たなら、再度安全機構の有無を聞くのはおかしいはずです。


左矢前のブログ 次のブログ右矢

PMHFの誤解 (8)

posted by sakurai on October 12, 2022 #528

どこが誤りの起点かを調査します。まず、前稿の図527.2において、「研究成果報告書」を引用していますが、

3.1項の(15)のシングルポイント故障の定義の備考2に示されているように、安全機構が定義されている場合、シングルポイント故障にならないので、全ての故障モードはマルチプルポイントフォールトに分類される

とあります。これは誤りです「研究成果報告書」における規格の引用箇所を確認します。

図%%.1
図528.1 シングルポイント故障の定義(「研究成果報告書」の規格の引用箇所)

たしかに規格には「シングルポイントフォールトとならない」とありますが、とはいえマルチプルポイントフォールトには絶対になりません。その理由は最初の部分に書かれているように、安全目標を直接侵害するフォールトだからです。マルチプルポイントフォールトの定義は、別のエレメントのフォールトとの組み合わせにより安全目標侵害(VSG)となるフォールト、つまり安全目標を直接侵害しないフォールトです。

実際には図528.1備考1にもあるとおり、安全機構がある場合はシングルポイントフォールトにはならずに、残存フォールトとなります。「研究成果報告書」における規格の引用箇所を確認します。

図%%.2
図528.2 残存フォールトの定義(「研究成果報告書」の規格の引用箇所)

以上まとめると、「研究成果報告書」の筆者は故障分類フローを見ておらず、シングルポイントフォールトでなければマルチプルポイントフォールトだという思い違いにより、残余フォールトが全てゼロという結果となったと考えられます。

ところがこの文章の前に故障分類フローも記述されていました。であれば、この誤りはどこから来たのでしょうか?


左矢前のブログ 次のブログ右矢

PMHFの誤解 (7)

posted by sakurai on October 11, 2022 #527

過去記事で財団法人日本電子部品信頼性センター発行の「平成26年度 電子部品信頼性調査研究委員会 研究成果報告書」におけるPMHF式の誤りを指摘しました。それは例のPMHF式の誤り論文$\dagger$から来ているものでした。

指摘した記事の最後に、

もっとも$\lambda_\text{SPF/RF}$がゼロならDPF項は必ず100%ですが、そもそも$\lambda_\text{SPF/RF}$がゼロという点が信じられません。その理由はDPF項は経験的に3%未満だからです。

とありますが、なぜ$\lambda_\text{SPF/RF}$がゼロになるかの原因を調べました。すると驚くべきことが分かりました。全てのフォールトがMPFに分類されているため$\lambda_\text{SPF/RF}$がゼロとなっています。この「研究成果報告書」の当該部分を図527.1に示します。

図%%.1
図527.1 「研究成果報告書」の表
弊社で黄色い囲み線を加えましたが、全てのフォールトがMPFとなっていますが、本来はRFのはずです。このようになった理由を調べたところ、当該の表の前に
図%%.2
図527.2 「研究成果報告書」の引用

との記述がありました。通常SMが付いている回路がほとんどなので、この記述に従えば全ての回路のRFがゼロになってしまいます。これは故障分類の誤りであり、「安全機構が定義されている場合...残存フォールトは0になる」という記述では、いかなるSMでもカバレージは常に0%になってしまいます。

安全機構がある場合、一旦取り除いて考えるのが機能安全の基本です。


左矢前のブログ 次のブログ右矢

PMHFの誤解 (6)

posted by sakurai on October 7, 2022 #526

また、別の論文 "Safety-Oriented System Hardware Architecture Exploration in Compliance with ISO 26262"において、PMHF式の問題点を発見しました。この論文も例のPMHF式の誤り論文$\dagger$を下敷きにし、誤りを再生産しています。この誤りの連鎖はどうしたら止められるのでしょうか。

この論文の当該部分を図526.1に示します。

図%%.1
図526.1 論文のPMHF式

繰り返しになりますが、$\lambda_\text{MPF,l}$は、PMHFに単純に足すことはできません。シングルポイントとレイテントフォールトの危険度は桁違いに異なります。具体的には単一の故障率どうしで比較するのではなく、確率で比較しなければならないため、レイテントフォールトの場合はさらに別のフォールトの生起確率をかける必要があります。つまりDPF確率が問題となってきます。

従って、それらを一緒にすることはレイテントフォールト確率の過剰評価となります。実際の経験ではレイテントフォールトの効果は3%未満でした。従って理論的には無視できませんが、実際上は無視しても良いレベルの値と言えます。


$\dagger$Y. Chang, L. Huang, H. Liu, C. Yang and C. Chiu, "Assessing automotive functional safety microprocessor with ISO 26262 hardware requirements," Technical Papers of 2014 International Symposium on VLSI Design, Automation and Test, Hsinchu, 2014, pp. 1-4, doi: 10.1109/VLSI-DAT.2014.6834876.


左矢前のブログ 次のブログ右矢

posted by sakurai on October 6, 2022 #525

レビュー結果に対する応答を行いました。RAMS 2023は2023年1月にフロリダ州オーランドで開催予定ですが、CDCによる入国制限が継続しており、実際に米国入国が可能かどうかは現段階では不透明です。なお、入国できない場合は録画等で発表予定です。

表525.1はRAMS 2023正式採択までのマイルストーンであり、今後適宜更新します。

表525.1 RAMS 2023へのマイルストーン
期限 マイルストーン 状態
2022/8/1 論文、プレゼン投稿締め切り(名前、所属無し版) 投稿済
2022/9/12022/9/27 第1回論文、プレゼン資料査読コメント受領 受領済
2022/10/9 改訂版論文、プレゼン投稿締め切り(名前、所属無し版) 投稿済
2022/?/? 最終査読コメント受領
2022/10/10 学会出席登録締め切り 登録済
2022/10/10 最終論文、プレゼン投稿締め切り(名前、所属有り版)


左矢前のブログ 次のブログ右矢

PMHFの誤解 (5)

posted by sakurai on October 5, 2022 #524

別の論文 "Functional Safety BMS Design Methodology for Automotive Lithium-Based Batteries"において、PMHF式が記載されています。この論文は他と異なりDPFが考慮されています。現在までに弊社の論文を除き、PMHF式でDPF項まで考慮されているものはほとんど発見されていません。

この論文の当該部分を図524.1に示します。

図%%.1
図524.1 論文のPMHF式

式の前後の文には式の出典等は書かれておらず、いきなり(3)が現れます。問題は$\lambda_\text{MP_DP}$と$\lambda_\text{MP_L}$が何を意味するかです。論文には故障分類フローが書かれており、それにより正しく$\lambda_\text{MP_DP}$と$\lambda_\text{MP_L}$を分類していました。

弊社提案式は過去記事でまとめましたが、非冗長系に関して $$ M_\text{PMHF,NRD}={(1-K_\text{IF,RF})\lambda_\text{IF}+2K_{\text{IF,RF}}\alpha}\\ =(1-K_\text{IF,RF})\lambda_\text{IF}+K_{\text{IF,RF}}\lambda_{\mathrm{IF}}\lambda_{\mathrm{SM}}[(1-K_{\mathrm{SM,MPF}})T_\text{lifetime}+K_{\mathrm{SM,MPF}}\tau] \tag{524.1} $$ ここで、$T_\text{lifetime}$に関する項と$\tau$に関する項があり、それぞれレイテントフォールトのリスク、ディテクテッドフォールトのリスクです。後者は定期修理期間$\tau$以内のリスクしかないのでその項を無視すれば、 $$ (524.1)\approx(1-K_\text{IF,RF})\lambda_\text{IF}+K_\text{IF,RF}\lambda_\text{IF}\lambda_\text{SM}(1-K_\text{SM,MPF})T_\text{lifetime}\\ =\lambda_\text{SPF/RF}+\lambda_\text{IF,DPF}\lambda_\text{SM,DPF,lat}T_\text{lifetime} \tag{524.2} $$ となります。論文の故障率が、 $$ \lambda_\text{MPF_DP}=\lambda_\text{IF,DPF,det}+\lambda_\text{SM,DPF,det}=\sum\lambda_\text{DPF,det}\\ \lambda_\text{MPF_L}=\lambda_\text{IF,DPF,lat}+\lambda_\text{SM,DPF,lat}=\sum\lambda_\text{DPF,lat} $$ なので、若干不正確ではありますが、まあまあ良いPMHF式だと思われます。DPFの評価は本来、レイテントとなるSMのフォールトにIFのフォールトが起きる2重故障なので、IFとSMは対応する必要があります。この分析にはFTAを用いてMCSを導出することで最小の組み合わせを得ることができます。

しかしながら、本論文ではFMEDAを用いて計算すると書かれているため、積をとってから$\sum$を計算するのではなく$\sum$の後積をとっていますが、DPF項は比較的小さいためこれでも問題ないと考えます。

安全目標や安全要求の分析、FMEDAによるSPFM/LFM/PMHFの導出等、誤りなく記述されいて参考になる論文だと思いますが、唯一の欠点は出版社がMDPIだというところです。


左矢前のブログ 次のブログ右矢

PMHFの誤解 (4)

posted by sakurai on October 4, 2022 #523

またPMHF式の誤り論文$\dagger$(記事はここ)の誤りが他の論文に波及しているのを発見しました。 "A Novel Method to Speed-Up the Evaluation of Cyber-Physical Systems (ISO 26262)"という論文です。

この論文の当該部分を図523.1に示します。

図%%.1
図523.1 論文のPMHF式

和訳を付けると、

ランダムハードウェア故障のための確率的メトリック(PMHF): PMHFは、一点故障、残留故障、二点故障による安全目標違反の残留リスクを評価する。 違反の最大確率の定量的な目標値を定義する。 以下の式は、単一点故障、残留故障、二点故障を引き起こす各ハードウェア部品の故障モードに対する故障率を推定する(ISO 61508)。

まずISO 61508という規格は有りません。IEC 61508のtypoだとして、その中にPMHFは定義されていません。おそらくPMHF式の誤り論文$\dagger$において、

ISO 26262にはPMHF式が出ていないため(実際はPart 10に書かれている)、IEC 61508を参照する

と書かれていたので、その誤りが伝播したものと思われます。裏を取ることをしないのでしょうか。


$\dagger$Y. Chang, L. Huang, H. Liu, C. Yang and C. Chiu, "Assessing automotive functional safety microprocessor with ISO 26262 hardware requirements," Technical Papers of 2014 International Symposium on VLSI Design, Automation and Test, Hsinchu, 2014, pp. 1-4, doi: 10.1109/VLSI-DAT.2014.6834876.


左矢前のブログ 次のブログ右矢

PMHFの誤解 (3)

posted by sakurai on October 3, 2022 #522

Business Cubeのプレゼン資料においてPMHFの誤りを発見しました。ASIL-Dでは0.01[FIT]、ASIL-Cでは0.1[FIT]とありますが、いずれも誤りです。1st editionの時点からそれぞれ10[FIT]、100[FIT]でした。2nd editionでは緩和されましたが、10FITの目標値は変わっていません。

図%%.1
図522.1 BCのプレゼン資料(表紙)

その次のページにはこれと矛盾した正しい数値が書かれています。ASIL-Dではこの10[FIT]が正しい目標値です。

図%%.2
図522.2 BCのプレゼン資料(PMHF計算)

このページ(図522.2)は正しいです。、PMHFの目標値は2nd editionではサブシステム毎になり、アイテムとしてはおよそ10倍まで緩和されたものの、サブシステムとしては10[FIT]です。


左矢前のブログ 次のブログ右矢


ページ: