29.01.2015 Views

Embedded Software for SoC - Grupo de Mecatrônica EESC/USP

Embedded Software for SoC - Grupo de Mecatrônica EESC/USP

Embedded Software for SoC - Grupo de Mecatrônica EESC/USP

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Detecting Soft Errors by a Purely <strong>Software</strong> Approach 41<br />

2.1. Trans<strong>for</strong>mation rules<br />

The studied approach exploits several co<strong>de</strong> trans<strong>for</strong>mation rules. The rules are<br />

classified in three basic groups presented in the following.<br />

2.1.1. Errors affecting data<br />

This group of rules aims at <strong>de</strong>tecting those faults affecting the data. The i<strong>de</strong>a<br />

is to <strong>de</strong>termine the inter<strong>de</strong>pen<strong>de</strong>nce relationships between the variables of<br />

the program and to classify them in two categories according to their purpose<br />

in the program:<br />

intermediary variables: they are used <strong>for</strong> the calculation of other variables;<br />

final variables: they do not take part in calculation of any other variable.<br />

Once the variables relationships are drawn up‚ all the variables in the<br />

program are duplicated. For each operation carried out on an original variable‚<br />

the operation is repeated <strong>for</strong> its replica‚ that we will call duplicated variable.<br />

Thus‚ the inter<strong>de</strong>pen<strong>de</strong>nce relationships between the duplicated variables are<br />

the same with those between the original variables. After each write operation<br />

on the final variables‚ a consistency check between the values of the<br />

two variables (original and duplicated) is introduced. An error is signaled if<br />

there is a difference between the value of the original variable and that of the<br />

duplicated variable.<br />

The proposed rules are:<br />

I<strong>de</strong>ntification of the relationships between the variables;<br />

Classification of the variables according to their purpose in the program:<br />

intermediary variable and final variable;<br />

Every variable x must be duplicated: let x1 and x2 be the names of the<br />

two copies;<br />

Every operation per<strong>for</strong>med on x must be per<strong>for</strong>med on x1 and x2;<br />

After each write operation on the final variables‚ the two copies x1 and<br />

x2 must be checked <strong>for</strong> consistency‚ and an error <strong>de</strong>tection procedure is<br />

activated if an inconsistency is <strong>de</strong>tected.<br />

Figure 4-1 illustrates the application of these rules to a simple instruction<br />

sequence consisting of two arithmetical operations per<strong>for</strong>med on four variables<br />

(Figure 4-1a). The inter<strong>de</strong>pen<strong>de</strong>nce relationships between the variables<br />

are: a =f(b‚ c) and d =f(a = f(b‚ c)‚ b). In this case only d is consi<strong>de</strong>red as<br />

a final variable while a‚ b and c are intermediary variables. Figure 4-1b shows<br />

the trans<strong>for</strong>mations issued from the set of rules presented.<br />

2.1.2. Errors affecting basic instructions<br />

This group of rules aims at <strong>de</strong>tecting those faults modifying the co<strong>de</strong> provoking<br />

the execution of incorrect jumps (<strong>for</strong> instance by modification of the

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!