Posts Issued in March, 2020

BSV(Bluespec SystemVerilog) (3)

posted by sakurai on March 31, 2020 #230

BSV(Bluespec SystemVerilog)によるシミュレーション

bscとは、Bluespecが最近オープンソース化したコンパイラです。詳しくは、ここを見てください。

いろいろと調整した結果、bscがインストールできました。早速、以下のようなフィボナッチモジュール(ファイル名FibOne.bsv)をコンパイルしてみます。これは、フィボナッチ数列を発生するモジュールで、前の値に次の値を加算することを繰り返すものです。

モジュールファイル:FibOne.bsv

(* synthesize *)
module mkFibOne();
   // register containing the current Fibonacci value
   Reg#(int) this_fib();              // interface instantiation
   mkReg#(0) this_fib_inst(this_fib); // module instantiation
   // register containing the next Fibonacci value
   Reg#(int) next_fib();
   mkReg#(1) next_fib_inst(next_fib);

   rule fib;  // predicate condition always true, so omitted
      this_fib <= next_fib;
      next_fib <= this_fib + next_fib;  // note that this uses stale this_fib
      $display("%0d", this_fib);
      if ( this_fib > 10000 ) $finish(0) ;
  endrule: fib
endmodule: mkFibOne

モジュール内にテストベンチのような\$displayや$finishの記述があるので、これだけでテストが可能です(が、モジュール設計としては良くないので、後で外します)。

BSVプログラムの説明

以下の部分は、現在の値this_fibと次の値next_fibを保持するレジスタのインスタンスです。

   // register containing the current Fibonacci value
   Reg#(int) this_fib();              // interface instantiation
   mkReg#(0) this_fib_inst(this_fib); // module instantiation
   // register containing the next Fibonacci value
   Reg#(int) next_fib();
   mkReg#(1) next_fib_inst(next_fib);

次のように、ruleブロックにアルゴリズム計算ルールを記述します。

      this_fib <= next_fib;
      next_fib <= this_fib + next_fib;  // note that this uses stale this_fib

コメントにも書いているように、this_fibとnext_fibは同時に変更されるので、それぞれ、直前の値を読み込み、同時に値を更新します。

Bluesimによるシミュレーション

コンパイル及びシミュレーションモデル生成(リンク)の2段階で行います。太字が入力部分です。

$ bsc -sim  FibOne.bsv
Elaborated module file created: mkFibOne.ba
$ bsc -sim -e mkFibOne -o mkFibOne.exec
Bluesim object created: mkFibOne.{h,o}
Bluesim object created: model_mkFibOne.{h,o}
Simulation shared library created: mkFibOne.exec.so
Simulation executable created: mkFibOne.exec

mkFibOne.execというbluesimの実行ファイルが生成されたので起動します。

$ ./mkFibOne.exec
0
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946

Verlogの生成

次に、確認のためにverilogシミュレーションを実行します。まずbscにより、モジュールを合成可能なVerilogコードにコンパイルします。

$  bsc -verilog FibOne.bsv
Verilog file created: mkFibOne.v

生成されたファイル名はモジュール名+".v"(mkFibOne.v)となります。

モジュールファイル:mkFibOne.v

//
// Generated by Bluespec Compiler (build 38534dc)
//
// On Mon Mar 23 06:33:47 JST 2020
//
//
// Ports:
// Name                         I/O  size props
// CLK                            I     1 clock
// RST_N                          I     1 reset
//
// No combinational paths from inputs to outputs
//
//

`ifdef BSV_ASSIGNMENT_DELAY
`else
   `define BSV_ASSIGNMENT_DELAY
`endif

`ifdef BSV_POSITIVE_RESET
   `define BSV_RESET_VALUE 1'b1
   `define BSV_RESET_EDGE posedge
`else
   `define BSV_RESET_VALUE 1'b0
   `define BSV_RESET_EDGE negedge
`endif

module mkFibOne(CLK,
                RST_N);
   input  CLK;
   input  RST_N;

   // register next_fib_inst
   reg [31 : 0] next_fib_inst;
   wire [31 : 0] next_fib_inst$D_IN;
   wire next_fib_inst$EN;

   // register this_fib_inst
   reg [31 : 0] this_fib_inst;
   wire [31 : 0] this_fib_inst$D_IN;
   wire this_fib_inst$EN;

   // register next_fib_inst
   assign next_fib_inst$D_IN = this_fib_inst + next_fib_inst ;
   assign next_fib_inst$EN = 1'd1 ;

   // register this_fib_inst
   assign this_fib_inst$D_IN = next_fib_inst ;
   assign this_fib_inst$EN = 1'd1 ;

   // handling of inlined registers

   always@(posedge CLK)
      begin
         if (RST_N == `BSV_RESET_VALUE)
            begin
               next_fib_inst <= `BSV_ASSIGNMENT_DELAY 32'd1;
               this_fib_inst <= `BSV_ASSIGNMENT_DELAY 32'd0;
            end
         else
            begin
               if (next_fib_inst$EN)
                  next_fib_inst <= `BSV_ASSIGNMENT_DELAY next_fib_inst$D_IN;
               if (this_fib_inst$EN)
                  this_fib_inst <= `BSV_ASSIGNMENT_DELAY this_fib_inst$D_IN;
            end
      end

   // synopsys translate_off
   `ifdef BSV_NO_INITIAL_BLOCKS
   `else // not BSV_NO_INITIAL_BLOCKS
   initial
   begin
      next_fib_inst = 32'hAAAAAAAA;
      this_fib_inst = 32'hAAAAAAAA;
   end
   `endif // BSV_NO_INITIAL_BLOCKS
   // synopsys translate_on

   // handling of system tasks

   // synopsys translate_off
   always@(negedge CLK)
   begin
      #0;
      if (RST_N != `BSV_RESET_VALUE) $display("%0d", $signed(this_fib_inst));
      if (RST_N != `BSV_RESET_VALUE)
      if ((this_fib_inst ^ 32'h80000000) > 32'h80002710) $finish(32'd0);
   end
   // synopsys translate_on
endmodule  // mkFibOne

テストベンチの作成

bluesimは暗黙のクロックやリセットが動作するため、テストベンチ無しでもシミュレーションが実行できました。一方verilogではそのような機能は無いので以下のようなテストベンチ(ファイル名tbmkFibOne.v)を用意します。

テストベンチ中の/AUTO〇〇/という記述は、emacsのverilog modeによるインスタンスやポートの自動生成の機能です。C-c C-aにより、面倒なポートリストやインスタンス部分が自動生成できます。テストベンチでは、モジュールへの入力用に/AUTOREGINPUT/と、モジュールからの出力用に/AUTOWIRE/を指定しておきます。

テストベンチファイル:tbmkFibOne.v

`timescale 1ns/1ps
 
module tb_mkFibOne;
   /*AUTOREGINPUT*/
   // Beginning of automatic reg inputs (for undeclared instantiated-module inputs)
   reg          CLK;            // To mkFibOne of mkFibOne.v
   reg          RST_N;          // To mkFibOne of mkFibOne.v
   // End of automatics
   /*AUTOWIRE*/
   mkFibOne mkFibOne (/*AUTOINST*/
              // Inputs
              .CLK      (CLK),
              .RST_N        (RST_N));
   
   initial begin
      RST_N = 1'b0;
      #30;
      RST_N = 1'b1;
   end
   
   initial begin
      CLK = 1'b0;
      forever begin
     #5;
     CLK = ~CLK;
      end
   end
   
   initial begin
      $dumpfile("tbmkFibOne.vcd");
      $dumpvars(0,mkFibOne);
   end
   
endmodule 

Verilogシミュレーションの実行

iverilogにより実行ファイルmkFibOne.exevを生成し、シミュレーションを実行すると、同じ結果となりました。

$ iverilog tbmkFibOne.v mkFibOne.v -o mkFibOne.exev
$ ./mkFibOne.exev 
VCD info: dumpfile tbmkFibOne.vcd opened for output.
0
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946

波形ビュワーであるgtkwaveを起動します。verilogシミュレーションで生成したVCDファイルを指定します。

$ gtkwave -f tbmkFibOne.vcd
GTKWave Analyzer v3.3.111 (w)1999-2020 BSI

[0] start time.
[520000] end time.

verilogシミュレーションの波形をgtkwaveで表示します。

図%%.1
図230.1 GTKWaveによる波形

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

BSV(Bluespec SystemVerilog) (2)

posted by sakurai on March 30, 2020 #229

BSV(Bluespec SystemVerilog)の解説

詳細はこちら(魚拓)

図229.1のような、3つのプロセスがレジスタx, yを更新する回路を設計することを考えます。この回路には、次のルール1から3までの、3つの仕様があります。

  • ルール1: cond2がアサートされると、プロセス2が起動しy--します。
  • ルール2: プロセス2が起動しないとき、かつcond1がアサートされると、プロセス1が起動しy++し、かつ同時にx--します。
  • ルール3: プロセス1が起動しないとき、かつcond0がアサートされると、プロセス0が起動しx++します。

補足するとルール2の場合、プロセス1が起動するときy++, x--は同時に起きるアトミックな演算です。つまり、プロセス1によるx--のみ、またはy++のみの実行は仕様違反となります。

図%%.1
図229.1 3つの並行プロセスにより書き換えられる2つのレジスタx, y
Verilogではステートに注目して記述します。
    always @ (posedge CLK) begin
        if (cond2)
            y <= y - 1;
        else if (cond1) begin
            y <= y + 1;
            x <= x - 1;
        end else if (cond0)
            x <= x + 1;
    end

このように記述したくなりますが、これだとcond2のアサート時にはxは書き換えられません。cond2アサートかつcond0アサートの場合は、ルール1とルール3が有効となるため、y--かつx++となるべきです。バグの原因は、優先順位(競合関係)が直接無いプロセス2と0に優先順位を持ち込んだことと考えて、alwaysの中を以下のように修正します。

        if (cond2)
            y <= y - 1;
        else if (cond1) begin
            y <= y + 1;

        if (cond1) begin
            x <= x - 1;
        end else if (cond0)
            x <= x + 1;

すると、今度は、プロセス1がプロセス0に勝ち、かつプロセス2に負けた時に、アトミック性が成立しません。ルール2が半分だけ実行されてしまいます。実はプロセス2と1は無関係ではなく、プロセス1を経由して関係が有ったのです。

ひとつの考え方としては、ハードでは並行に条件判定をするので、if else if 等とせずに、3本のif文を並べます。さらに外部信号cond1,2,3,でレジスタ更新を行うのではなく、プロセスの起動信号に注目します。具体的には、プロセス2の起動はcond2であるから、

    cond2

がプロセス2の起動条件です。プロセス1の起動は、そうではなく(!cond2)、かつ、cond1であるから、

    !cond2 && cond1

がプロセス1の起動条件です。プロセスの起動は、そうではなく(!(!cond2 && cond1))、かつ、cond0であるから、

    !(!cond2 && cond1) && cond0

がプロセス0の起動条件です。これらより、以下の記述が得られます。

        if (cond2)
            y <= y - 1;

        if (!cond2 && cond1) begin
            y <= y + 1;
            x <= x - 1;
        end 

        if (!(!cond2 && cond1) && cond0))
            x <= x + 1;

verilogでは優先順位を信号の条件で表すことで、複雑になっています。後からプロセスの優先順位が変わると、ハードコードされた条件文の修正が大変なことになります。

一方、VSBでは、レジスタの更新ルールがそのまま記述できます。

    rule proc0 (cond0);
        x <= x + 1;
    endrule

    rule proc1 (cond1);
        y <= y + 1;
        x <= x - 1;
    endrule

    rule proc2 (cond2);
        y <= y - 1;
    endrule
    (* descending_urgency = “proc2, proc1, proc0” *)

プロセスの優先順位と信号の条件が分離されているため、プロセスの優先順位が変わっても、コメントの修正のみでコードの修正はありません。

それでは、bscにより合成したverilogコードではどうなっているかというと、

    assign x$EN = WILL_FIRE_RL_proc0 || WILL_FIRE_RL_proc1 ;
    assign y$EN = WILL_FIRE_RL_proc1 || cond2 ;

    assign WILL_FIRE_RL_proc0 = cond0 && !WILL_FIRE_RL_proc1 ;
    assign WILL_FIRE_RL_proc1 = cond1 && !cond2 ;

レジスタxが変更されるのはx$ENがtrueの時、つまり、

    (cond0 && !(cond1 && !cond2)) || (cond1 && !cond2)

の時であり、レジスタyが変更されるのはy$ENがtrueの時、つまり、

    (cond1 && !cond2) || cond2

前述のverilogのifの中の条件と等価であることが分かります。

プロセスが3つ程度だとそれほど有難みがわかりませんが、これにプロセス3を一つ追加して、4つの優先順位を付けると、図229.2の赤字の修正のように、非常に複雑になります。

図%%.2
図229.2 4つの並行プロセスにより書き換えられる2つのレジスタx, y

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

$M_\text{PMHF}$の計算 (12)

posted by sakurai on March 27, 2020 #228

#223に示した理由により、本稿の議論は全て取り消します。

前稿において、(227.2)右辺第2項を(一部の係数を除き)展開すると、 $$ \require{cancel} \img[-1.35em]{/images/withinseminar.png}\\ \frac{1}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}Q_\mathrm{SM}(t)tf_\text{IF}(t)dt \tag{228.1} $$ ここで、WolframAlphaによる級数展開を用いると、

integral_0^(τ) (1 - exp(-λ_2 t)) λ_1 exp(-λ_1 t) dt * (τ^-1)

$$ \frac{1}{\tau}\int_0^\tau F_2(t)f_1(t)dt \approx\frac{1}{2}\lambda_1\lambda_2\tau \tag{228.2} $$

integral_0^(τ) (1 - exp(-λ_2 t)) λ_1 exp(-λ_1 t) t dt * (τ^-1)

$$ \frac{1}{\tau}\int_0^\tau F_2(t)tf_1(t)dt \approx\frac{1}{3}\lambda_1\lambda_2\tau^2 \tag{228.3} $$

$$ (228.1)=\frac{1}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}\left[(1-K_\text{SM,MPF})F_\mathrm{SM}(t)tf_\text{IF}(t)+K_\text{SM,MPF}F_\mathrm{SM}(u)tf_\text{IF}(t)\right]dt\\ =\frac{1-K_\text{SM,MPF}}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}F_\text{SM}(t)tf_\text{IF}(t)dt+\frac{K_\text{SM,MPF}}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}F_\text{SM}(u)tf_\text{IF}(t)dt\\ \quad\text{s.t. }u:=t\bmod\tau\tag{228.4} $$ (228.4)右辺第2項を$t=i\tau+u, i=0,1,...,n-1,T_\text{lifetime}=n\tau$として$t$を$u$で表す変数変換を行うと、 $$ \frac{1}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}F_\text{SM}(u)tf_\text{IF}(t)dt =\frac{1}{T_\text{lifetime}}\sum_{i=0}^{n-1}\int_0^\tau F_\text{SM}(u)(i\tau+u)f_\text{IF}(i\tau+u)du\\ =\frac{\tau}{T_\text{lifetime}}\sum_{i=0}^{n-1}ie^{-\lambda_\text{IF}i\tau}\int_0^\tau F_\text{SM}(u)f_\text{IF}(u)du+\frac{1}{T_\text{lifetime}}\sum_{i=0}^{n-1}e^{-\lambda_\text{IF}i\tau}\int_0^\tau F_\text{SM}(u)uf_\text{IF}(u)du\\ =\frac{1}{\bcancel{T_\text{lifetime}}}\left(\frac{1}{3}\lambda_\text{IF}\lambda_\text{SM}\tau^{\bcancel{3}2}\right)\left(\bcancel{\tau}\frac{\bcancel{T_\text{lifetime}}(T_\text{lifetime}-\tau)}{\bcancel{\tau}^\bcancel{2}}+\frac{\bcancel{T_\text{lifetime}}}{\bcancel{\tau}}\right)\\ =\frac{1}{3}\lambda_\text{IF}\lambda_\text{SM}\tau^2(T_\text{lifetime}-\tau+1) \tag{228.5} $$ (228.3)を(228.4)の第1項、(228.5)を第2項に用いて、

$$ (228.1)=\frac{1-K_\text{SM,MPF}}{\bcancel{T_\text{lifetime}}} \left(\frac{1}{3}\lambda_\text{IF}\lambda_\text{SM}T_\text{lifetime}^{\bcancel{3}2}\right) +K_\text{SM,MPF} \left(\frac{1}{3}\lambda_\text{IF}\lambda_\text{SM}\tau^2(T_\text{lifetime}-\tau+1)\right) \tag{228.6} $$


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

$M_\text{PMHF}$の計算 (11)

posted by sakurai on March 26, 2020 #227

#223に示した理由により、本稿の議論は全て取り消します。

前稿において、LAT2ではIFのAvailability(227.1で赤字で表示)は$R_\text{IF}(t)$でも$A_\text{IF}(t)$でもないことを解説しました。 $$ \overline{q_{\mathrm{DPF1,IFR}}}=\frac{K_{\mathrm{IF,RF}}}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}Q_{\mathrm{SM}}(t)\color{red}{A_{\mathrm{IF}}(t)}\lambda_{\mathrm{IF}}dt \approx K_\text{IF,RF}\alpha \tag{227.1} $$ LAT2に来た時刻を$s$としたとき、$A_\text{IF}(s)R_\text{IF}(t-s)$で表される状態確率となりますが、問題は$s$が確率的に値を取ることです。これを消去するため、前稿(224.8)の結果を使用すれば、 $$ (227.1)=\frac{K_\mathrm{IF,RF}}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}Q_\mathrm{SM}(t)\left(1-\frac{1}{2}K_\text{IF,MPF}\lambda_\text{IF}(t-\tau)\right)R_\text{IF}(t)\lambda_\mathrm{IF}dt\\ =\frac{K_\mathrm{IF,RF}}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}Q_\mathrm{SM}(t)\left(1-\frac{1}{2}K_\text{IF,MPF}\lambda_\text{IF}(t-\tau)\right)f_\text{IF}(t)dt\\ =\frac{K_\mathrm{IF,RF}}{T_\text{lifetime}}\left(1+\frac{1}{2}K_\text{IF,MPF}\lambda_\text{IF}\tau\right)\int_0^{T_\text{lifetime}}Q_\mathrm{SM}(t)f_\text{IF}(t)dt\\ -\frac{K_\mathrm{IF,RF}K_\text{IF,MPF}\lambda_\text{IF}}{2T_\text{lifetime}}\int_0^{T_\text{lifetime}}Q_\mathrm{SM}(t)tf_\text{IF}(t)dt \tag{227.2} $$ (227.2)右辺第1項は、積分公式から $$ \frac{K_\mathrm{IF,RF}}{2}\left(1+\frac{1}{2}K_\text{IF,MPF}\lambda_\text{IF}\tau\right)\lambda_\text{IF}\lambda_\text{SM}\left[(1-K_\text{SM,MPF})T_\text{lifetime}+K_\text{SM,MPF}\tau\right]\tag{227.3} $$ (227.2)右辺第2項を(一部の係数を除き)展開すると、 $$ \require{cancel} \img[-1.35em]{/images/withinseminar.png}\\ =\frac{1}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}\left[(1-K_\text{SM,MPF})F_\mathrm{SM}(t)tf_\text{IF}(t)+K_\text{SM,MPF}F_\mathrm{SM}(u)tf_\text{IF}(t)\right]dt\\ =\frac{(1-\bcancel{K_\text{SM,MPF}})}{T_\text{lifetime}}\lambda_\text{IF}\int_0^{T_\text{lifetime}}te^{-\lambda_\text{IF}t}dt-\frac{1-K_\text{SM,MPF}}{T_\text{lifetime}}\lambda_\text{IF}\int_0^{T_\text{lifetime}}te^{-(\lambda_\text{IF}+\lambda_\text{SM})t}dt\\ +\bcancel{\frac{K_\text{SM,MPF}\lambda_\text{IF}}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}te^{-\lambda_\text{IF}t}dt}-\frac{K_\text{SM,MPF}\lambda_\text{IF}}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}te^{-\lambda_\text{IF}t-\lambda_\text{SM}u}dt\\ =\frac{\lambda_\text{IF}}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}te^{-\lambda_\text{IF}t}dt-\frac{1-K_\text{SM,MPF}}{T_\text{lifetime}}\lambda_\text{IF}\int_0^{T_\text{lifetime}}te^{-(\lambda_\text{IF}+\lambda_\text{SM})t}dt\\ -\frac{K_\text{SM,MPF}\lambda_\text{IF}}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}te^{-\lambda_\text{IF}t-\lambda_\text{SM}u}dt \quad\text{s.t. }u:=t\bmod\tau\tag{227.4} $$ (225.3)及び(226.1)の結果を用いて、 $$ (227.4)=\lambda_\text{IF}\left(\frac{T_\text{lifetime}}{2}-\frac{\lambda_\text{IF}T_\text{lifetime}^2}{3}\right)\\ -(1-K_\text{SM,MPF})\lambda_\text{IF}\left(\frac{T_\text{lifetime}}{2}-\frac{(\lambda_\text{IF}+\lambda_\text{SM})T_\text{lifetime}^2}{3}\right)\\ -K_\text{SM,MPF}\lambda_\text{IF}\img[-1.35em]{/images/withinseminar.png} \quad\text{s.t. }u:=t\bmod\tau\tag{227.5} $$


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

PMHF計算に関する積分公式 (3)

posted by sakurai on March 25, 2020 #226

#223に示した理由により、本稿の議論は全て取り消します。

前稿の続きで、ISO 26262のPMHFの導出の場合、確率積分を実行する際に次の(226.1)が出てくるため、あらかじめ結果を導出しておき、後程積分公式として使用します。 $$ \img[-1.35em]{/images/withinseminar.png} \tag{226.1} $$ $t=i\tau+u, i=0,1,...,n-1, n:=\frac{T_\text{lifetime}}{\tau}$とおいて変数変換すれば、 $$ (226.1)=\frac{1}{T_\text{lifetime}}\sum_{i=0}^{n-1}\int_0^\tau(i\tau+u)e^{-\lambda_\text{IF}(i\tau+u)-\lambda_\text{SM}u}du\\ =\tau\sum_{i=0}^{n-1}i e^{-\lambda_\text{IF}i\tau} \frac{1}{T_\text{lifetime}}\int_0^\tau e^{-(\lambda_\text{IF}+\lambda_\text{SM})u}du +\sum_{i=0}^{n-1}e^{-\lambda_\text{IF}i\tau}\frac{1}{T_\text{lifetime}}\int_0^\tau ue^{-(\lambda_\text{IF}+\lambda_\text{SM})u}du\\ \tag{226.2} $$ ここで、(226.2)右辺第1項の級数の和を求めるため和を$x$とおけば、 $$ x:=\sum_{i=0}^{n-1}i e^{-\lambda_\text{IF}i\tau}=e^{-\lambda_\text{IF}\tau}+2e^{-\lambda_\text{IF}2\tau}+...+(n-1)e^{-\lambda_\text{IF}(n-1)\tau}\tag{226.3} $$ となり、 $$ e^{-\lambda_\text{IF}\tau}x=\sum_{i=0}^{n-1}i e^{-\lambda_\text{IF}(i+1)\tau}=e^{-\lambda_\text{IF}2\tau}+...+(n-2)e^{-\lambda_\text{IF}(n-1)\tau}+(n-1)e^{-\lambda_\text{IF}n\tau}\tag{226.4} $$ よって、(226.3)-(226.4)より、 $$ x(1- e^{-\lambda_\text{IF}\tau})=e^{-\lambda_\text{IF}\tau}+e^{-\lambda_\text{IF}2\tau}+...+e^{-\lambda_\text{IF}(n-1)\tau}-(n-1)e^{-\lambda_\text{IF}n\tau}\\ =\underbrace{e^{-\lambda_\text{IF}\tau}+e^{-\lambda_\text{IF}2\tau}+...+e^{-\lambda_\text{IF}(n-1)\tau}+e^{-\lambda_\text{IF}n\tau}}_{\text{n terms}}-ne^{-\lambda_\text{IF}n\tau}\\ =e^{-\lambda_\text{IF}\tau}\frac{1-e^{-\lambda_\text{IF}T_\text{lifetime}}}{1-e^{-\lambda_\text{IF}\tau}}-n e^{-\lambda_\text{IF}T_\text{lifetime}}\tag{226.5} $$ よって、Maclaurin展開の1次近似を用いれば、 $$ \require{cancel} x\approx\frac{\bcancel{\lambda_\text{IF}}T_\text{lifetime}}{\lambda_\text{IF}^\bcancel{2}\tau^2}(1-\lambda_\text{IF}\tau)-\frac{n(1-\lambda_\text{IF}T_\text{lifetime})}{\lambda_\text{IF}\tau}\\ =\frac{T_\text{lifetime}(\bcancel{1}-\bcancel{\lambda_\text{IF}}\tau)-T_\text{lifetime}(\bcancel{1}-\bcancel{\lambda_\text{IF}}T_\text{lifetime})}{\bcancel{\lambda_\text{IF}}\tau^2}=\frac{T_\text{lifetime}(T_\text{lifetime}-\tau)}{\tau^2}\tag{226.6} $$ 次に、(226.2)右辺第2項の級数の和は、 $$ \sum_{i=0}^{n-1}e^{-\lambda_\text{IF}i\tau}=e^{-\lambda_\text{IF}\tau}+...+e^{-\lambda_\text{IF}(n-1)\tau}=\frac{1-e^{-\lambda_\text{IF}T_\text{lifetime}}}{1-e^{-\lambda_\text{IF}\tau}} \approx\frac{\bcancel{\lambda_\text{IF}}T_\text{lifetime}}{\bcancel{\lambda_\text{IF}}\tau} \tag{226.7} $$ 次に、(226.2)右辺第1項の定積分の値は、 $$ \int_0^\tau e^{-(\lambda_\text{IF}+\lambda_\text{SM})u}du =\left[\frac{e^{-(\lambda_\text{IF}+\lambda_\text{SM})u}}{-(\lambda_\text{IF}+\lambda_\text{SM})}\right]_0^\tau =\frac{e^{-(\lambda_\text{IF}+\lambda_\text{SM})\tau}-1}{-(\lambda_\text{IF}+\lambda_\text{SM})}\\ \approx\frac{1}{\bcancel{\lambda_\text{IF}+\lambda_\text{SM}}}\left(\bcancel{(\lambda_\text{IF}+\lambda_\text{SM})}\tau-\frac{1}{2}(\lambda_\text{IF}+\lambda_\text{SM})^\bcancel{2}\tau^2\right) =\tau\left(1-\frac{1}{2}(\lambda_\text{IF}+\lambda_\text{SM})\tau\right) \tag{226.8} $$ 以上から、$\color{red}{(226.5)}$と$\color{green}{(226.6)}$を(226.2)に適用し、$\color{blue}{(226.7})$と部分積分の結果$\color{purple}{(225.1)}$を用いれば、 $$ (226.2)=\bcancel{\tau}\color{red}{\left(\frac{\bcancel{T_\text{lifetime}}(T_\text{lifetime}-\tau)}{\bcancel{\tau^2}}\right)}\frac{1}{\bcancel{T_\text{lifetime}}}\color{blue}{\bcancel{\tau}\left(1-\frac{1}{2}(\lambda_\text{IF}+\lambda_\text{SM})\tau\right)}\\ +\color{green}{\frac{\bcancel{T_\text{lifetime}}}{\bcancel{\tau}}}\frac{1}{\bcancel{T_\text{lifetime}}} \color{purple}{\left(\frac{\tau^\bcancel{2}}{2}- \frac{(\lambda_\text{IF}+\lambda_\text{SM})\tau^{\bcancel{3}2}}{3}\right)}\\ =(T_\text{lifetime}-\tau)\left(1-\frac{1}{2}(\lambda_\text{IF}+\lambda_\text{SM})\tau\right)+\left(\frac{\tau}{2}-\frac{1}{3}(\lambda_\text{IF}+\lambda_\text{SM})\tau^2\right)\\ =\left(1-\frac{1}{2}(\lambda_\text{IF}+\lambda_\text{SM})\tau\right)T_\text{lifetime}-\frac{\tau}{2}+\frac{1}{6}(\lambda_\text{IF}+\lambda_\text{SM})\tau^2 \tag{226.9} $$


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

PMHF計算に関する積分公式 (2)

posted by sakurai on March 24, 2020 #225

#223に示した理由により、本稿の議論は全て取り消します。

ISO 26262のPMHFの導出の場合、確率積分を実行する際に次の(225.1)が出てくるため、あらかじめ結果を導出しておき、後程積分公式として使用します。 $$ \img[-1.35em]{/images/withinseminar.png} \tag{225.1} $$ 部分積分により、 $$ \require{cancel} (225.1)=\left[\frac{t e^{-\lambda t}}{-\lambda }\right]_0^{\tau} -\int_0^{\tau}\frac{e^{-\lambda t}}{-\lambda }dt =\left(\frac{\tau e^{-\lambda\tau}}{-\lambda }\right) -\left[\frac{e^{-\lambda t}}{\lambda ^2}\right]_0^{\tau}\\ =-\frac{\tau}{\lambda}e^{-\lambda \tau} +\left(\frac{1-e^{-\lambda\tau}}{\lambda ^2}\right)\\ \approx-\frac{\tau}{\lambda}\left(1-\lambda\tau+\frac{1}{2}\lambda^2\tau^2\right) +\frac{1}{\lambda^\bcancel{2}}\left(\bcancel{\lambda}\tau-\frac{1}{2}\lambda^\bcancel{2}\tau^2+\frac{1}{6}\lambda^{\bcancel{3}2}\tau^3\right)\\ =-\frac{1}{\bcancel{\lambda}}\left(\bcancel{\tau}-\bcancel{\lambda}\tau^2+\frac{1}{2}\lambda ^\bcancel{2}\tau^3\right) +\frac{1}{\bcancel{\lambda}}\left(\bcancel{\tau}-\frac{1}{2}\bcancel{\lambda}\tau^2+\frac{1}{6}\lambda^\bcancel{2}\tau^3\right)\\ =\frac{\tau^2}{2}-\frac{\lambda\tau^3}{3} \tag{225.2} $$ 積分範囲が$[0, \tau)$ではなく、$[0, T_\text{lifetime})$の場合で車両寿命で平均化する場合は、$\tau$を$T_\text{lifetime}$と置きなおせば、

$$ \frac{1}{T_\text{lifetime}}\int_0^{T_\text{lifetime}} t e^{-\lambda t}dt =\frac{T_\text{lifetime}}{2}-\frac{\lambda T_\text{lifetime}^2}{3}\tag{225.3} $$ と求まります。


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

IFのAvailabilityの平均化

posted by sakurai on March 20, 2020 #224

#223に示した理由により、本稿の議論は全て取り消します。

今回はダイレクトに $$ \img[-1.35em]{/images/withinseminar.png} \tag{224.1} $$ を求めます。

まず、(224.1)式に、指数分布式である $$ \begin{eqnarray} \begin{cases} A_\text{IF}\text(s)&=&(1-K_\text{IF,MPF})e^{-\lambda_\text{IF}s}+K_\text{IF,MPF}e^{-\lambda_\text{IF}u}, u:=s\bmod \tau及び\\ R_\text{IF}(s)&=&e^{-\lambda_\text{IF}s} \end{cases} \end{eqnarray}\tag{224.2} $$ を代入し、 $$ \begin{eqnarray} (224.1)&=&\frac{1}{t}\int_0^t\left[(1-K_\text{IF,MPF})e^{-\lambda_\text{IF}s}+K_\text{IF,MPF}e^{-\lambda_\text{IF}u}\right]e^{-\lambda_\text{IF}(t-s)}ds\\ &=&\frac{1-K_\text{IF,MPF}}{t}\int_0^te^{-\lambda_\text{IF}s}e^{-\lambda_\text{IF}(t-s)}ds +\frac{K_\text{IF,MPF}}{t}\int_0^te^{-\lambda_\text{IF}u}e^{-\lambda_\text{IF}(t-s)}ds\\ &=&\frac{1-K_\text{IF,MPF}}{t}e^{-\lambda_\text{IF}t}\int_0^t ds +\frac{K_\text{IF,MPF}}{t}e^{-\lambda_\text{IF}t}\int_0^te^{-\lambda_\text{IF}(u-s)}ds\\ \end{eqnarray} \tag{224.3} $$ ここで、右辺第2項において、$u=s\bmod\tau$より、$s=i\tau+u, i=0,1,...,k-1, t=k\tau$とおいて、$s$を$u$と$i$で表し $$ \img[-1.35em]{/images/withinseminar.png} \tag{224.4} $$ を計算すると、 $$ (224.4)=\sum_{i=0}^{k-1}\int_0^\tau e^{\lambda_\text{IF}i\tau}du =\sum_{i=0}^{k-1}e^{\lambda_\text{IF}i\tau}\int_0^\tau du =\tau\sum_{i=0}^{k-1}e^{\lambda_\text{IF}i\tau} \tag{224.5} $$

ここで、等比数列の和及びMaclaurin展開の1次近似より、 $$ \require{cancel} (224.5)=\tau\frac{1-e^{\lambda_\text{IF}k\tau}}{1-e^{\lambda_\text{IF}\tau}} =\tau\frac{1-e^{\lambda_\text{IF}t}}{1-e^{\lambda_\text{IF}\tau}} \approx\bcancel{\tau}\frac{\bcancel{\lambda_\text{IF}}t-\frac{1}{2}\lambda_\text{IF}^\bcancel{2}t^2}{\bcancel{\lambda_\text{IF}}\bcancel{\tau}-\frac{1}{2}\lambda_\text{IF}^\bcancel{2}\tau^\bcancel{2}} =\frac{t-\frac{1}{2}\lambda_\text{IF}t^2}{1-\frac{1}{2}\lambda_\text{IF}\tau}\\ \approx\left(t-\frac{1}{2}\lambda_\text{IF}t^2\right)\left(1+\frac{1}{2}\lambda_\text{IF}\tau\right) \tag{224.6} $$ であるから、(224.6)及び(224.4)の結果を(224.3)に用いれば、 $$ (224.3)\approx\frac{1-K_\text{IF,MPF}}{\bcancel{t}}e^{-\lambda_\text{IF}t}\bcancel{t} +\frac{K_\text{IF,MPF}}{\bcancel{t}}e^{-\lambda_\text{IF}t}\bcancel{t}\left(1-\frac{1}{2}\lambda_\text{IF}t\right)\left(1+\frac{1}{2}\lambda_\text{IF}\tau\right)\\ \tag{224.7} $$ ここで、$\lambda_\text{IF}^2\approx0$と置いて、 $$ (224.7)\approx\left(1\bcancel{-K_\text{IF,MPF}}\right)e^{-\lambda_\text{IF}t} +K_\text{IF,MPF}e^{-\lambda_\text{IF}t}\left(\bcancel{1}-\frac{1}{2}\lambda_\text{IF}(t-\tau)\right)\\ =e^{-\lambda_\text{IF}t}-\frac{1}{2}K_\text{IF,MPF}\lambda_\text{IF}(t-\tau)e^{-\lambda_\text{IF}t} =\left(1-\frac{1}{2}K_\text{IF,MPF}\lambda_\text{IF}(t-\tau)\right)R_\text{IF}(t) \tag{224.8} $$ 以上から、$s$を消去して$t$で表すことができました。


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

$M_\text{PMHF}$の計算 (10)

posted by sakurai on March 17, 2020 #223

SMがフォールトしてLAT2のステートに来た時刻を$s$とすると、時刻$t$以前に来たことから$0\le s\le t$であり、SMとIFは故障事象自体は独立ですが、相手の故障事象により自分の状態確率が変化します。

この論点は、LAT2においてはSMがフォールトしているので、IFがアンリペアラブルである⇒LAT2に来た時間$s$により状態確率$\Pr\{\text{LAT2 at }t\}$が変化する⇒マルコフ性が崩れる、と新たに誤解したことによるものです。

正しくは、IFのリペアラビリティは1st SMであるSM(=LAT2でダウンしている)により決まりません。IFのリペアラビリティは2nd SMにのみ決定され、2nd SMは故障しないため、マルコフ性は崩れていません。従って本稿(#223)以降(~#228)の議論は全て取り消します。

正しい議論は以前のhttp://fs-micro.com/blogSummary.htmlの「PMHFの計算」~「PMHFの計算(8)」のとおりです。

従って、時刻$t$以前の時刻$s$の$0\le s\le t$におけるIFの平均稼働確率を求め、それを用いて状態確率を表し、さらに遷移確率をかけるという方法で解きます。

以前求めた、$M_\text{PMHF}$の計算(8)の式(222.2)は、 $$ \begin{eqnarray} \Pr\{\mathrm{LAT2\ at\ }t\}&=&\Pr\{\mathrm{IF^R\ up\ at\ }t\cap\mathrm{SM\ down\ at\ }t\}\\ &=&\Pr\{\mathrm{IF^R\ up\ at\ }t\}\Pr\{\mathrm{SM\ down\ at\ }t\}\\ &=&\color{red}{A_{\mathrm{IF}}(t)}Q_{\mathrm{SM}}(t)\tag{222.2再掲} \end{eqnarray} $$ でしたが、IFのAvailability$\Pr\{\mathrm{IF^R\ up\ at\ }t\}$は、OPRに居る時、すなわち時刻$s$以前にSMがupな状態では、IFはリペアラブル($=\mathrm{IF^\text{R}}$)であり、時刻$s$でSMにフォールトが起きてdownしLAT2に来た時からは、IFはアンリペアラブル($=\mathrm{IF^\text{U}}$)となります。よって、本来は $$ \begin{eqnarray} \Pr\{\mathrm{IF^R\ up\ at\ }t\}&=&\Pr\{\mathrm{IF^\text{R}\ up\ at\ }s\cap\mathrm{IF^\text{U}\ up\ in\ }(s, t]\}\\ &=&\Pr\{\mathrm{IF^\text{R}\ up\ at\ }s\}\Pr\{\mathrm{IF^\text{U}\ not\ failed\ in\ }(s, t]\}\\ &=&A_\text{IF}(s)R_\text{IF}(t-s)\tag{223.1} \end{eqnarray} $$ 従って、(222.2)で右辺に$A_\text{IF}(t)$を使用したのは、LAT2におけるIFのAvailabilityの上限を求めたことになります。その理由は、大小関係は $$ R(t)\le A(s)R(t-s)\le A(t)\quad\text{s.t. }0\le s\le t\tag{223.2} $$ だからです。従って、IFのAvailabilityの下限を求めるには、右辺を$R_\text{IF}(t)$とおいて積分します。これは規格式と同じPMHF式を与えます。IFのAvailabilityの下限の積分はIFUモデルと同じになるため、(104.5)を参考にして、 $$ \overline{q_{\mathrm{DPF1,IFR}}}=\frac{K_{\mathrm{IF,RF}}}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}Q_{\mathrm{SM}}(t)\color{red}{R_{\mathrm{IF}}(t)}\lambda_{\mathrm{IF}}dt \approx K_\text{IF,RF}\alpha \tag{223.3} $$ SMのフォールトも同様であり、DPF2平均確率を求めれば、 $$ \overline{q_{\mathrm{DPF2,IFR}}}=\frac{1}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}Q_{\mathrm{IF}}(t)R_{\mathrm{SM}}(t)\lambda_{\mathrm{SM}}dt \approx\beta \tag{223.4} $$ 前稿と同様に$K_\text{IF,RF}=1$とします。表221.1及び222.1より、

表223.1 IFRモデルのPMHF式$(K_\text{IF,RF}=1)$
(1)+(2b)SPF (2a)DPF1 (3)DPF2
SPF統合(LATにおけるAvailability上限) $0$ $\gamma$ $\gamma$
SPF統合(LATにおけるAvailability下限) $0$ $\alpha$ $\beta$

ただし、 $$ \gamma:=\frac{1}{2}\lambda_\text{IF}\lambda_\text{SM}\left[(1-K_\text{MPF})T_\text{lifetime}+K_\text{MPF}\tau\right],\\ \text{s.t. }K_\text{MPF}:=1-(1-K_\text{IF,MPF})(1-K_\text{SM,MPF})=K_\text{IF,MPF}+K_\text{SM,MPF}-K_\text{IF,MPF}K_\text{SM,MPF}\tag{223.5} $$ 規格式(1/2のおかしな点を修正後)は$K_\text{IF,RF}=1$として、DPFのみを表示すれば、 $$ \begin{eqnarray} 修正版規格式&=&\frac{1}{2}\lambda_\text{SM}(1-K_\text{SM,MPF})&\cdot&\lambda_\text{IF}T_\text{lifetime}\\ &+&\frac{1}{2}\lambda_\text{SM}K_\text{SM,MPF}&\cdot&\lambda_\text{IF}\tau\\ &+&\frac{1}{2}\lambda_\text{IF}(1-K_\text{IF,MPF})&\cdot&\lambda_\text{SM}T_\text{lifetime}\\ &+&\frac{1}{2}\lambda_\text{IF}K_\text{IF,MPF}&\cdot&\lambda_\text{SM}\tau\\ \end{eqnarray} =\lambda_\text{IF}\lambda_\text{SM}\left[(1-\frac{K_\text{IF,MPF}+K_\text{SM,MPF}}{2})T_\text{lifetime}+\frac{K_\text{IF,MPF}+K_\text{SM,MPF}}{2}\tau\right]=\alpha+\beta\tag{223.6} $$ 表(223.1)より(223.6)と(223.5)の2倍を比較するため、差を計算すれば、

\(\displaystyle{ \quad\quad\quad(\alpha+\beta)-2\gamma }\)

$$ \begin{eqnarray} &=&\lambda_\text{IF}\lambda_\text{SM}\left[\left(1-\frac{K_\text{IF,MPF}+K_\text{SM,MPF}}{2}\right)T_\text{lifetime}+\frac{K_\text{IF,MPF}+K_\text{SM,MPF}}{2}\tau\right]\\ & &-\lambda_\text{IF}\lambda_\text{SM}\left[\left(1-K_\text{MPF}\right)T_\text{lifetime}+K_\text{MPF}\tau\right]\\ &=&\lambda_\text{IF}\lambda_\text{SM}\left[\left(K_\text{MPF}-\frac{K_\text{IF,MPF}+K_\text{SM,MPF}}{2}\right)T_\text{lifetime}-\left(K_\text{MPF}-\frac{K_\text{IF,MPF}+K_\text{SM,MPF}}{2}\right)\tau\right]\\ &=&\lambda_\text{IF}\lambda_\text{SM}\left(K_\text{MPF}-\frac{K_\text{IF,MPF}+K_\text{SM,MPF}}{2}\right)(T_\text{lifetime}-\tau)\\ &=&\lambda_\text{IF}\lambda_\text{SM}\left(\frac{K_\text{IF,MPF}+K_\text{SM,MPF}}{2}-K_\text{IF,MPF}K_\text{SM,MPF}\right)(T_\text{lifetime}-\tau)\ge 0,\\ &\quad\quad&\text{s.t. }K_\text{IF,MPF}, K_\text{SM,MPF}\in[0, 1), T_\text{lifetime}\gg \tau\tag{223.7} \end{eqnarray} $$ よって、 $$2\gamma\le M_\text{PMHF}\le\alpha+\beta \tag{223.8}$$ これより、規格式はPMHFの上限、論文式はPMHFの下限を表しています。


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

$M_\text{PMHF}$の計算 (9)

posted by sakurai on March 16, 2020 #222

IFRモデル

全く同様な計算をIFRモデルでも行います。同様に(2)を(2a)と(2b)に分離します(図222.1の赤矢印)。

図%%.1
図222.1 LAT2からの分岐をSPF方向とDPF1方向に分離
まず(2a)のDPF1方向への確率積分は、 $$ \begin{eqnarray} \overline{q_{\mathrm{DPF1,IFR}}}&=&\frac{1}{T_\text{lifetime}}\Pr\{\mathrm{DPF1\ at\ }T_\text{lifetime}\}\\ &=&\frac{1}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}\Pr\{\mathrm{LAT2\ at\ }t\cap\mathrm{IF^R\ down\ in\ }(t, t+dt]\\ & &\cap\mathrm{VSG\ of\ IF\ preventable}\}\\ &=&\frac{1}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}\Pr\{\mathrm{IF^R\ down\ in\ }(t, t+dt]\ |\ \mathrm{LAT2\ at\ }t\}\\ & &\ \ \ \ \cdot\Pr\{\mathrm{LAT2\ at\ }t\}\Pr\{\mathrm{VSG\ of\ IF\ preventable}\} \end{eqnarray} \tag{222.1} $$ ここで(107.2)(107.3)より、 $$ \Pr\{\mathrm{LAT2\ at\ }t\}=\Pr\{\mathrm{IF^R\ up\ at\ }t\cap\mathrm{SM\ down\ at\ }t\}\\ =\Pr\{\mathrm{IF^R\ up\ at\ }t\}\Pr\{\mathrm{SM\ down\ at\ }t\}\\=A_{\mathrm{IF}}(t)Q_{\mathrm{SM}}(t)\tag{222.2} $$ 一方、(107.7)より、 $$ \Pr\{\mathrm{IF^R\ down\ in\ }(t, t+dt]\ |\ \mathrm{LAT2\ at\ }t\}\\ =\Pr\{\mathrm{IF^R\ down\ in\ }(t, t+dt]\ |\ \mathrm{IF^R\ up\ at\ }t\}=\lambda_{\mathrm{IF}}dt\tag{222.3} $$ (222.2)、(222.3)を(222.1)に用いれば、 $$ \overline{q_{\mathrm{DPF1,IFR}}}=\frac{K_{\mathrm{IF,RF}}}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}Q_{\mathrm{SM}}(t)A_{\mathrm{IF}}(t)\lambda_{\mathrm{IF}}dt \tag{222.4} $$ これに(107.8)の結果を利用すれば、 $$ (222.4)=K_{\text{IF,RF}}\beta\tag{222.5} $$

次に(2b)のSPF方向への確率積分は、IFUモデルと変わりません。SPFは、IFのフォールトがアンプリベンタブル(VSG抑止不可)な場合に起きるためです。 $$ \begin{eqnarray} \overline{q_{\mathrm{SPF(2b),IFR}}}&=&\frac{1}{T_\text{lifetime}}\Pr\{\mathrm{SPF(2b)\ at\ }T_\text{lifetime}\}\\ &=&\frac{1}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}\Pr\{\mathrm{LAT2\ at\ }t\cap\mathrm{IF^U\ down\ in\ }(t, t+dt]\\ & &\cap\overline{\mathrm{VSG\ of\ IF\ preventable}}\}\\ &=&\frac{1}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}\Pr\{\mathrm{IF^U\ down\ in\ }(t, t+dt]\ |\ \mathrm{LAT2\ at\ }t\}\\ & &\ \ \ \ \cdot\Pr\{\mathrm{LAT2\ at\ }t\}\Pr\{\overline{\mathrm{VSG\ of\ IF\ preventable}}\} \end{eqnarray} \tag{222.6} $$ 同様に(221.2)(221.3)を用いれば、 $$ (222.6)=\frac{1-K_{\text{IF,RF}}}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}Q_{\mathrm{SM}}(t)R_{\mathrm{IF}}(t)\lambda_{\mathrm{IF}}dt \tag{222.7} $$ これに(104.5)の結果を利用すれば、 $$ (222.7)=(1-K_{\text{IF,RF}})\alpha\tag{222.8} $$ 以上より、IFRモデルの統合、分離方式を比較すると、表222.1のようになります。変化点を黄色で示しています。

表222.1 IFRモデルのPMHF式
(1)SPF (2)DPF1 (3)DPF2
LAT2統合 $(1-K_\text{IF,RF})\lambda_\text{IF}-(1-K_\text{IF,RF})\alpha$
(103.7)
$(1-K_\text{IF,RF})\alpha+K_\text{IF,RF}\beta$
(107.8)
$K_\text{IF,RF}\beta$
(106.4)
規格式1(1)+(2)$\dagger$ $(1-K_\text{IF,RF})\lambda_\text{IF}+K_\text{IF,RF}\beta$
規格式3(1)+(2)+(3)$\dagger$ $(1-K_\text{IF,RF})\lambda_\text{IF}+2K_\text{IF,RF}\beta$
(1)SPF (2b)SPF' (2a)DPF1 (3)DPF2
LAT2分離 $(1-K_\text{IF,RF})\lambda_\text{IF}-(1-K_\text{IF,RF})\alpha$ $(1-K_\text{IF,RF})\alpha$
(222.7)
$K_\text{IF,RF}\beta$
(222.5)
$K_\text{IF,RF}\beta$
(1)+(2b)SPF (2a)DPF1 (3)DPF2
SPF統合 $(1-K_\text{IF,RF})\lambda_\text{IF}$ $K_\text{IF,RF}\beta$ $K_\text{IF,RF}\beta$
SPF/DPF統合 $(1-K_\text{IF,RF})\lambda_\text{IF}$ $2K_\text{IF,RF}\beta$

$$ \text{ただし、} \begin{cases} \alpha:=\frac{1}{2}\lambda_{\mathrm{IF}}\lambda_{\mathrm{SM}}[(1-K_{\mathrm{SM,MPF}})T_\text{lifetime}+K_{\mathrm{SM,MPF}}\tau]\\ \beta:=\frac{1}{2}\lambda_\text{IF}\lambda_\text{SM}\left[(1-K_\text{MPF})T_\text{lifetime}+K_\text{MPF}\tau\right]\\ K_\text{MPF}:=K_\text{IF,MPF}+K_\text{SM,MPF}-K_\text{IF,MPF}K_\text{SM,MPF} \end{cases} $$

前稿と同様、SPF統合のほうが単純な式となっています。LAT2統合において、SPFもDPF1も複雑な式でしたが、まとめ方を変えると単純な式となるため、この方が本質だと考えます。

一般式

表222.1より、2020年RAMS論文で示したように一般式は以下のようになります。 $$ M_\text{PMHF}=\bbox[#ccffff,2pt]{(1-K_\text{IF,RF})\lambda_\text{IF}+2K_\text{IF,RF}\beta}\\ =(1-K_\text{IF,RF})\lambda_\text{IF}+K_\text{IF,RF}\lambda_\text{IF}\lambda_\text{SM}\left[(1-K_\text{MPF})T_\text{lifetime}+K_\text{MPF}\tau\right]\\ s.t.\quad K_\text{MPF}:=K_\text{IF,MPF}+K_\text{SM,MPF}-K_\text{IF,MPF}K_\text{SM,MPF} \tag{222.9} $$

また、$K_\text{IF,MPF}=0$のとき、すなわち、IFRモデルにおいて、IFの2nd SMが存在せずアンリペアラブルとなるときは$K_\text{MPF}=K_\text{SM,MPF}$となるため、$\beta=\alpha$となり、当然ですがIFRモデルはIFUモデルと同一の式となります。

冗長構成

IFRモデルはIFもSMもリペアラブルということは冗長構成により$K_\text{IF,RF}=1$となるため、それを適用したものを表222.2に示します。SPFが0となるため、LAT2統合でもSPF統合でも

  • $M_\text{PMHF,SPF}=0$
  • $M_\text{PMHF,DPF1}=\beta$

となり変わりません。

表222.2 冗長構成のIFRモデルのPMHF式$(K_\text{IF,RF}=1)$
(1)SPF (2)DPF1 (3)DPF2
LAT2統合 $0$ $\beta$ $\beta$
規格式1(1)+(2)$\dagger$ $\beta$
規格式3(1)+(2)+(3)$\dagger$ $2\beta$
(1)SPF (2b)SPF' (2a)DPF1 (3)DPF2
LAT2分離 $0$ $0$ $\beta$ $\beta$
(1)+(2b)SPF (2a)DPF1 (3)DPF2
SPF統合 $0$ $\beta$ $\beta$
SPF/DPF統合 $0$ $2\beta$

$$M_\text{PMHF,RD}=\bbox[#ccffff,2pt]{2\beta}\\ =\lambda_\text{IF}\lambda_\text{SM}\left[(1-K_\text{MPF})T_\text{lifetime}+K_\text{MPF}\tau\right]\tag{222.10}$$


$\dagger$規格式1: 規格第1版 Part 10-8.3.3の第1式(ブログの図104.2)の条件=IFが後にフォールトする場合。DPF2はSMが後にフォールトする場合なので対象外
$\dagger$規格式3: 規格第1版 Part 10-8.3.3の第3式(ブログの図105.2)の条件=IF, SMのフォールトの順を問わない場合


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

$M_\text{PMHF}$の計算 (8)

posted by sakurai on March 13, 2020 #221

IFUモデル LAT2分離

IFUモデルのLAT2ステートにおいて、IFのアンプリベンタブル(VSG抑止不可)な部分にフォールトが起きた場合、そのフォールトはSMのup/down状態に依存しないため、本質的には広義のSPF(SMがあるので狭義ではRF)ですが、形式的にはSMのフォールトに引き続いて起きるためDPFとしました(#104)。

前稿(#102~#108)のPMHF導出においては、DPFとして扱いましたが、「$M_{\mathrm{PMHF}}$の計算(2)」のMarkov chain図を変更し、LAT2からDPF1への遷移(2)を分離して、DPF1への遷移(2a)とSPF1への遷移(2b)とに分離します(図221.1の赤矢印)。

図%%.1
図221.1 LAT2からの遷移を分離

図221.1の(1)、(3)の確率微分方程式は変わりません。まず(2a)のDPF1方向への確率積分は、 $$ \begin{eqnarray} \overline{q_{\mathrm{DPF1,IFU}}}&=&\frac{1}{T_\text{lifetime}}\Pr\{\mathrm{DPF1\ at\ }T_\text{lifetime}\}\\ &=&\frac{1}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}\Pr\{\mathrm{LAT2\ at\ }t\cap\mathrm{IF^U\ down\ in\ }(t, t+dt]\\ & &\cap\mathrm{VSG\ of\ IF\ preventable}\}\\ &=&\frac{1}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}\Pr\{\mathrm{IF^U\ down\ in\ }(t, t+dt]\ |\ \mathrm{LAT2\ at\ }t\}\\ & &\ \ \ \ \cdot\Pr\{\mathrm{LAT2\ at\ }t\}\Pr\{\mathrm{VSG\ of\ IF\ preventable}\} \end{eqnarray} \tag{221.1} $$ ここで(104.2)(104.3)より、 $$ \Pr\{\mathrm{LAT2\ at\ }t\}=\Pr\{\mathrm{IF^U\ up\ at\ }t\cap\mathrm{SM\ down\ at\ }t\}\\ =\Pr\{\mathrm{IF^U\ up\ at\ }t\}\Pr\{\mathrm{SM\ down\ at\ }t\}\\=R_{\mathrm{IF}}(t)Q_{\mathrm{SM}}(t)\tag{221.2} $$ (104.4)より、 $$ \Pr\{\mathrm{IF^U\ down\ in\ }(t, t+dt]\ |\ \mathrm{LAT2\ at\ }t\}\\ =\Pr\{\mathrm{IF^U\ down\ in\ }(t, t+dt]\ |\ \mathrm{IF^U\ up\ at\ }t\}=\lambda_{\mathrm{IF}}dt\tag{221.3} $$ (221.2)、(221.3)を(221.1)に用いれば、 $$ \overline{q_{\mathrm{DPF1,IFU}}}=\frac{K_{\text{IF,RF}}}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}Q_{\mathrm{SM}}(t)R_{\mathrm{IF}}(t)\lambda_{\mathrm{IF}}dt \tag{221.4} $$ ゆえに、(104.5)の結果を利用すれば、(2a)は、 $$ (221.4)=K_{\text{IF,RF}}\alpha\tag{221.5} $$

次に(2b)のSPF方向への確率積分は、 $$ \begin{eqnarray} \overline{q_{\mathrm{SPF(2b),IFU}}}&=&\frac{1}{T_\text{lifetime}}\Pr\{\mathrm{SPF(2b)\ at\ }T_\text{lifetime}\}\\ &=&\frac{1}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}\Pr\{\mathrm{LAT2\ at\ }t\cap\mathrm{IF^U\ down\ in\ }(t, t+dt]\\ & &\cap\overline{\mathrm{VSG\ of\ IF\ preventable}}\}\\ &=&\frac{1}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}\Pr\{\mathrm{IF^U\ down\ in\ }(t, t+dt]\ |\ \mathrm{LAT2\ at\ }t\}\\ & &\ \ \ \ \cdot\Pr\{\mathrm{LAT2\ at\ }t\}\Pr\{\overline{\mathrm{VSG\ of\ IF\ preventable}}\} \end{eqnarray} \tag{221.6} $$ 同様に(221.2)、(221.3)を用いれば、 $$ \overline{q_{\mathrm{SPF(2b),IFU}}}=\frac{1-K_{\text{IF,RF}}}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}Q_{\mathrm{SM}}(t)R_{\mathrm{IF}}(t)\lambda_{\mathrm{IF}}dt \tag{221.7} $$ ゆえに、(104.5)の結果を利用すれば、(2b)は、 $$ (221.7)=(1-K_{\text{IF,RF}})\alpha\tag{221.8} $$

IFUモデル SPF統合

$\dagger$「IFUモデルのLAT2において、IFのアンプリベンタブル部分にフォールトが起きた場合」について、SPFへの遷移(2b)とDPF1への遷移(2a)の確率積分を行いました。今度はSPFへの確率積分を統合します。図221.1において(1)と(2b)はいずれもSPFとして扱い、これをSPF統合と呼びます。

  • LAT2統合 --- $\dagger$の場合、SPFへの遷移(2b)は本質的にSPFであるが、形式的にSMのフォールトに引き続くDPF(2)=(2a)+(2b)として計算、#103~#105の議論
  • LAT2分離 --- $\dagger$の場合、LAT2からの遷移(2)を、SPFへの遷移(2b)とDPF1への遷移(2a)に分離、本稿の議論
  • SPF統合 --- $\dagger$の場合、LAT2からSPFへの遷移(2b)と、元のOPRからSPFへの遷移(1)を統合、LAT2分離によりそれぞれ求めた確率の組み合わせを変更、本稿の議論
  • SPF/DPF統合 --- $\dagger$の場合、SPF統合に加えて、DPF1DPF2は同じ状態であるため、DPFも統合

それぞれの方式のPMHF式と、参考にPMHF規格式を比較すると、表221.1のようになります。前稿からの変化部分を黄色で示しています。

表221.1 IFUモデルのPMHF式
(1)SPF (2)DPF1 (3)DPF2
LAT2統合 $(1-K_\text{IF,RF})\lambda_\text{IF}-(1-K_\text{IF,RF})\alpha$
(103.7)
$\alpha$
(104.5)
$K_\text{IF,RF}\alpha$
(105.5)
規格式1(1)+(2)$\dagger$ $(1-K_\text{IF,RF})\lambda_\text{IF}+K_\text{IF,RF}\alpha$
(104.6)

規格式3(1)+(2)+(3)$\dagger$ $(1-K_\text{IF,RF})\lambda_\text{IF}+2K_\text{IF,RF}\alpha$
(1)SPF (2b)SPF' (2a)DPF1 (3)DPF2
LAT2分離 $(1-K_\text{IF,RF})\lambda_\text{IF}-(1-K_\text{IF,RF})\alpha$ $(1-K_\text{IF,RF})\alpha$
(221.8)
$K_\text{IF,RF}\alpha$
(221.5)
$K_\text{IF,RF}\alpha$
(1)+(2b)SPF (2a)DPF1 (3)DPF2
SPF統合 $(1-K_\text{IF,RF})\lambda_\text{IF}$ $K_\text{IF,RF}\alpha$ $K_\text{IF,RF}\alpha$
SPF/DPF統合 $(1-K_\text{IF,RF})\lambda_\text{IF}$ $2K_\text{IF,RF}\alpha$

ただし$\alpha:=\frac{1}{2}\lambda_{\mathrm{IF}}\lambda_{\mathrm{SM}}[(1- K_{\mathrm{SM,MPF}})T_\text{lifetime}+K_{\mathrm{SM,MPF}}\tau]$

以上より、一般式は、 $$M_\text{PMHF}=(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_\text{IF}\lambda_\text{SM}\left[(1-K_\text{SM,MPF})T_\text{lifetime}+K_\text{SM,MPF}\tau\right]\tag{221.9}$$

SPF統合は、SPFのPMHFがRFの定義そのままという、非常に単純な式となっています。従って、#103のSPFのPMHF式や1st editionの規格式が複雑なのは、形式上のDPFをSPFから差し引いたためと言えます。また、DPF1とDPF2はルートが異なるのに同一の確率となっているのが少々驚きです。


$\dagger$規格式1: 規格第1版 Part 10-8.3.3の第1式(ブログの図104.2)の条件=IFが後にフォールトする場合。DPF2はSMが後にフォールトする場合なので対象外
$\dagger$規格式3: 規格第1版 Part 10-8.3.3の第3式(ブログの図105.2)の条件=IF, SMのフォールトの順を問わない場合

RAMS 2021において、PMHF式に基づくFTA構築法の論文発表が終了したため、本記事を開示します。


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


ページ: