In the following, an example illustrates how our proposed scheme works. To have an easier presentation, a constant value is assumed for each tasks' peak power so that each task consumes 1.2W of power during its execution. However, our proposed scheme works for more complex and larger task graphs. In this example, a quad-core chip with 3W TDP is considered that executes an application task graph with 8 tasks {T
1, T
2, T
3, T
4, T
5, T
6, T
7, T
8} with a TMR system (i.e., NMR with N=3). Figure. 2 shows the illustrative example of our proposed scheme for a given task graph (
Figure 2a) using list scheduling with our proposed policy. Dependencies between the tasks is shown in
Figure 2a where each tasks' worst-case execution time at the maximum supply voltage and the maximum operational frequency is placed above each task. Two copies of each task for the mandatory phase with one copy of each task for the conservative phase is scheduled in
Figure 2b and
Figure 2c.
Figure 2b shows a scheduling based PPA-LTF policy while our proposed scheme based P3FA-LTF policy is shown in
Figure 2c. In the mandatory phase, based on the lowest utilization and apart core for each copy of tasks policy, two copies of the task T
1 are respectively scheduled on C
0 and C
1 from the beginning of the execution. In the time slots between 30ms and 60ms on the C
3, the third copy of T
1 is scheduled based on the lowest utilization and apart core for each copy of tasks policy. Then, T
3 is selected based on the level-based longest task first policy, and two copies of T
3 are scheduled on C
3 and C
0 in the time slot [30ms, 50ms] and the time slot [50ms, 70ms], respectively. Of course, based on PPA-LTF policy in [
1], the second copy of T
3 can be scheduled in time slots between 50ms and 70ms on the schedule of C
3 (
Figure 2b), but scheduling two copies of T
3 on a same core can violate our proposed permanent fault tolerating policy. The third copy of T
3 is scheduled on C
1, in the time slots between 80ms and 100ms. For the next selected task T
2, one copy is mapped to C
3 in the time slots between 70ms and 80ms where, another copy is mapped to C
2 in the time slots between 80ms and 90ms. After scheduling two copies of T
2, third copy of T
2 is scheduled in the time slots between 90ms and 100ms on the schedule of C
0 to achieve three results for performing a complete majority voting. Of course, based on PPA-LTF policy in [
1], the third copy of T
2 can be scheduled in time slots between 80ms and 90ms on the schedule of C
1 in conservative phase (
Figure 2b), but this can violate our proposed permanent fault tolerating policy. Then, the proposed P3FA-LTF algorithm selects T
5 and maps two copies of T
5 to C
2 and C
3 separately and schedules T
5 in the time slots between 100ms and 120ms on the schedule of C
2 and C
3. In conservative phase, the third copy of T
5 is scheduled on the schedule of C
1 in the time slots between 120ms and 140ms after the execution of the second copy. For the next selected task T
4, two copies of this task are scheduled on C
3 and C
0 in the time slot [120ms, 130ms] and the time slide [130ms, 140ms], respectively. Although, based on PPA-LTF policy, the second copy of T
2 can be scheduled in time slots between 120ms and 130ms on the schedule of C
1 (
Figure 2b), but this can violate our proposed permanent fault tolerating policy. At the third level of the task graph, to schedule three tasks T
6, T
7 and T
8, based P3FA-LTF policy, at first, T
6 is selected and two copies of it are scheduled on the schedule of C
3 and C
0 separately at the time slots between 150ms and 180ms. Then, in conservative phase, another copy of T
6 is scheduled on C
1 in the time slots between 180ms and 210ms. For the next selected task T
7, two copies of it are placed on C
2 and C
3 in the time slot [180ms, 190ms] and [190ms, 200ms], respectively. After scheduling of two copies of T
7, the third copy is scheduled on the schedule of C
0 in the time slots between 200ms and 210ms. Of course, three copies of T
7 can be scheduled on C
2 based PPA-LTF policy (
Figure 2b), but this can violate our proposed permanent fault tolerating policy. After scheduling of T
6 and T
7, the algorithm selects T
8 and schedules two copies of T
8 on the schedule of C
2 and C
1 separately in the time slots between 210ms and 220ms. Finally, the third copy of T
8 is scheduled in the time slots between 220ms and 230ms.
Figure 2c shows the final schedule of
Figure 2a task graph, based our proposed P3FA-LTF policy where the peak power consumption of the system is kept below the chip TDP constraint and permanent fault is tolerated.