Riluzole Table shows the comparison results of error detecti
Table 2 shows the comparison results of error detection rate of each software-based CFC technique. Each version of benchmark is injected 10000 errors. Even though the injected errors are randomized in spite of their classifications, the large number of injected errors guarantees that all types of CFEs have appeared due to the large amount of tests. Actually in the real aerospace, SEUs also flip the bit randomly so this test is good for simulating the real environment. We have obtained the results from the counter in CPLD. The comparison results show that BGCFC can detect over 93% of all injected errors. The undetected injected errors, which are minority, are data errors or intra-node CFEs. BGCFC does not detect them explicitly. In the results, BGCFC, SCFC and GTCFC achieve high error detection rate, the detection rate of ECCA is variable and CFCSS manifests the lousiest result. The reason is explained as follows. For ECCA, the memory size of inserted checking instructions exceeds the memory size of the original code. Due to the randomness, bit flips are much more possible to occur in inserted checking instructions than in the original code, so the result is unstable. CFCSS lacks checking instructions at the end of basic blocks, and the XOR operation leads to aliasing problem for the basic block with multiple predecessors (named branch-fan-in Riluzole in CFCSS), so the result is lousy. Theoretically, the error detection capabilities of BGCFC, SCFC and GTCFC are the same. However, BGCFC, which is proposed in this paper, achieves the highest error detection rate. There are two reasons to explain this phenomenon. First, the memory overhead of BGCFC is the lowest among these three techniques, because of the randomness, the possibility of bit flips in inserted checking instructions is lower than the others. Hence, the error detection rate of BGCFC is the highest. Second, BGCFC fills the unused memory space with instructions “call Error()” while others are not, so it further increases the error detection rate. SCFC manifests better than GTCFC in the similar result, because the former’s memory overhead is less than the latter’s and the checking instructions in the middle of basic blocks help to increase the error detection rate. Therefore, we can conclude that even though the error detection rates are the same in theory, the result is inversely proportional to the memory overhead in practice. Resource constrained small satellites need to detect more CFEs with less time and memory, so neither the error detection rate nor time and memory overhead involved alone can reflect the effectiveness of the CFC techniques. We employ an evaluation factor to evaluate the entire effectiveness of the CFC techniques, which considers all the three factors. Evidently, both higher error detection rate and lower time and memory overhead should lead to higher evaluator factor. However, error detection rate should have a higher weight than time and memory overhead because the primary goal of CFC techniques is to detect CFEs. Therefore, we set the ratio of weight of error detection rate rdetection, time overhead toverhead and memory overhead moverhead to 2:1:1. Note that rdetection is in the range 0%–100%, whereas toverhead and moverhead are in the range 0∼∞, so we cannot simply add rdetection, toverhead and moverhead. Therefore, we introduce normalized factors for rdetection, toverhead and moverhead respectively to evaluate their effectiveness contribution. These factors should positively contribute to the effectiveness and be normalized to the range 0%–100%. The definitions of normalized factors arewhere max(toverhead,moverhead) is the maximum value of time and memory overhead in test results. According to the results in Table 1, max(toverhead,moverhead)=595.49%. Then we define the evaluation factor feval as Fig. 4 shows the comparison results of the average evaluation factor of these CFC techniques adopted in test, wherein BGCFC achieves the highest average evaluation factor. Such results suggest that BGCFC not only offers a high error detection rate and performs steadily well for different patterns of control flows, but also achieves both low time and memory overhead, so foraminifera is applicable for COTS-based small satellites in practice.