Exploiting Instruction Redundancy for Transient ... - Semantic Scholar

14 downloads 283 Views 202KB Size Report
Smaller and smaller transistors, higher and ... puter platforms such as laptops and cellular phones is ... HP/Compaq NonStop [4] are based on redundancy.
Exploiting Instruction Redundancy for Transient Fault Tolerance Toshinori Sato Department of Arti cial Intelligence Kyushu Institute of Technology [email protected]

Abstract

This paper presents an approach for integrating fault-tolerance techniques into microprocessors by utilizing instruction redundancy as well as time redundancy. Smaller and smaller transistors, higher and higher clock frequency, and lower and lower power supply voltage reduce reliability of microprocessors. In addition, microprocessors are used in systems which require high dependability, such as e-commerce businesses. Based on these trends, it is expected that the quality with respect to reliability will become important as well as performance and cost for future microprocessors. To meet the demand, we have proposed and evaluated a fault-tolerance mechanism, which is based on instruction reissue and utilizes time redundancy, and found severe performance loss. In order to mitigate the loss, this paper proposes to exploit instruction redundancy. Using the reuse table, previously executed computing is reused for checking the occurrence of transient faults. From detailed simulations, we nd that the performance loss caused by introducing faulttolerance into 4-way and 8-way superscalar processors is 12.5% and 20.8%, respectively. 1 Introduction

As transistors shrink in size with succeeding technology generations, future microprocessors will become susceptible to transient faults [19], which constitute the vast majority of hardware failures [28]. Transient faults are random events which occur when various noise sources cause an incorrect result. For example, cosmic ray particles can alter the state of latches and dynamic logic, resulting in logic errors. On the other hand, the use of portable and mobile computer platforms such as laptops and cellular phones is spreading widely. For example, it is expected that the new phones will be used for nancial services and other e-commerce businesses in the near future. For these applications, reliability and dependability are very important. In light of this, it is expected that the quality with respect to reliability will become important as well as performance and cost for future microprocessors. Current fault-tolerance techniques utilized in com-

mercial systems such as the IBM S/390 G5 [28] and the HP/Compaq NonStop [4] are based on redundancy. For example, error checking is implemented by duplicating chips and comparing outputs. These techniques require a twice or more hardware overhead. In addition, duplicate and compare is adequate for only error detection. The other example is parity or errorcorrecting code (ECC). Contemporary microprocessors use parity for caches. However, they leave control, arithmetic, and logical functions unchecked, since it is dicult and time-consuming to check these components [5, 28]. Hence, a low-cost and simple faulttolerance technique is necessary for future microprocessors. Recently, we have investigated the use of instruction reissue technique as a hardware mechanism to detect and recover from transient faults [20]. Originally, the instruction reissue mechanism is proposed for incorrect data speculation recovery. We modi ed and applied this mechanism for fault-tolerance. Since future microprocessors will utilize data speculation and include the instruction reissue mechanism [6, 7], this fault-tolerance mechanism costs the least hardware overhead. In addition, it is simple because detection of transient faults and their recovery processes are done simultaneously by means of dynamic instruction scheduling. However, unfortunately, we found significant performance loss. In this paper, we will investigate the use of instruction redundancy in order to mitigate the performance loss. The rest of this paper is organized as follows: Section 2 surveys related work. Section 3 explains that the instruction reissue mechanism is applicable to fault-tolerance, and explores design space to enhance the original proposal. Section 4 describes our evaluation methodology. Section 5 discusses our simulation results. Finally, Section 6 presents our conclusions. 2 Related Work

IBM S/390 G5 [28] is a commercial fault-tolerant microprocessor. However, it relies on traditional faulttolerance techniques and thus is not adequate for the mobile applications. HaL SPARC64 [23] and Intel Itanium [14] processors have fault detection mechanisms

for caches and memories but do not for functional units. In Fujitsu SPARC64 V [5], all chip internal data paths are covered by parity. DIVA [1] and SSD [8] are fault-tolerant microprocessors based on space redundancy. A checker processor attached behind its main processor pipeline is used for dynamically verifying committed instructions. Any hardware faults are corrected using the recovery mechanism for incorrect branch predictions. Hence, DIVA and SSD are hardware-based mechanisms and thus transparent. Sohi et al. [25] and Ray et al. [15] duplicate every instruction and detect faults by comparing two instructions which originate from a single instruction. Sohi et al. focus on fault detection and do not consider the recovery process. In the present paper, we will consider a transparent fault recovery mechanism. Ray et al. utilizes the recovery mechanism for incorrect branch predictions for the recovery from faults. A possible problem in their mechanism is that two executions belong to a single instruction might be e ected by the same transient fault and thus it might not be detected. A similar idea of using time redundancy for detecting transient faults is utilized in AR-SMT [18], SRT [12,16], and SRTR [31] processors. They are all based on simultaneous multithreading (SMT) processors [29]. In contrast, our approach is based on single thread superscalar processors. An SMT processor can execute multiple threads simultaneously and thus is attractive for fault detection since two redundant copies of a single thread are executed on the SMT to detect a fault by comparing two results. While ARSMT and SRT processors exploit these characteristics, they only detect transient faults but cannot recover from the faults transparently. The recovery should be supported by OS. Only SRTR processor has the ability of the recovery from faults. In addition, generating two redundant threads also requires OS support. Hence, transient fault detection based on these SMTbased processors is not transparent. Our approach is most similar to O3RS (Out Of Order Reliable Superscalar) proposed by Mendelson et al. [9]. It also exploits the instruction reissue mechanism for fault detection. However, O3RS does not utilize instruction redundancy. REESE [27] also executes every instruction twice by injecting the completed instruction into its instruction scheduling window, but it does not rely on the instruction reissue mechanism but a dedicated FIFO queue. Instruction reuse [10,24] is a technique, which eliminates redundant computations by utilizing instruction redundancy. Instruction redundancy is a characteristic of programs: Dynamic instances of a static instruction are executed with the same operand values many

Fetch

PC

FP Register File

LdSt Units

Instruction Cache

Decode

Register Rename

FP Units RUU

Int Register File

Data Cache

Int Units

Figure 1: Protected portion times. Thus, if the previous computation is kept in a table, the next same computation can be eliminated by looking up the table. Sodani et al. and Molina et al. proposed the reuse bu er and the redundant computation bu er, respectively, for utilizing instruction redundancy and thus for boosting processor performance. In contrast, this paper will investigate instruction redundancy not for performance gain but for reliability. 3 Fault Tolerance Mechanism

This section describes the transient fault tolerance mechanism based on the instruction reissue technique [11, 17, 22]. While the described mechanism is applicable to any dynamic instruction schedulers, we will explain it using our proposed instruction reissue mechanism [22], which is based on register update unit (RUU) [26].

3.1 Fault detection via instruction reissue

The proposed mechanism detects transient faults occurring in arithmetic and logical functions. Thus, the protected portion is depicted as the shaded box in Figure 1. We focus on these functions because they are unchecked in modern microprocessors [28], except for a few products [5]. Instruction cache, register les, and the RUU should be protected using parity or ECC, which is common for modern microprocessors. In order to detect transient faults, we propose to duplicate committed instructions and compare two results of a single instruction [20]. It is assumed the comparator is fault-free. This is possible by using large strong cells [23] or triple modular redundancy. We use the instruction reissue to execute each committed instruction twice. When every instruction becomes ready for commitment, it is reissued in the RUU and dispatched into a functional unit again. Its execution outcome which is generated for the rst time is held in the RUU and will be compared with its equivalent one when it is generated the second time. If they do not match, a transient fault is detected. Thus, di er-

OP

Fetch

PC

FP Register File

Register Rename

operand2 OP code operand1

FP Units

operand2

outcome

RUU LdSt Units

Instruction Cache

Decode

operand1

Int Register File

Data Cache

Int Units

=? =? =?

Figure 2: Protected portion for revised mechanism ent from the SMT approach, our proposal requires no additional program counters. There is an advantage of limiting only committed instructions are reissued. When each instruction is ready for commitment, its dependences | both control and data dependences | have been resolved. Therefore, it can be dispatched unconditionally if an appropriate functional unit is free. This utilizes the dispatch bandwidth eciently. Another role of the reissue policy is to ensure that the rst and second executions are not e ected by the same transient event. Completed instructions stay in the instruction window for a while before they are reissued. This works just like the delay queue in the AR-SMT processor [18]. On the other hand, a possible disadvantage of the policy is the increasing of pressure on the e ective instruction window capacity. We evaluated the in uence on processor performance in [20] and found signi cant performance loss. Unfortunately, the loss can not be easily reduced by increasing instruction window size [20].

3.2 Overhead reduction

From our previous studies, we have found that the fault-tolerance technique based on the instruction reissue mechanism causes considerable performance degradation. Hence, we investigate ways to mitigate the overhead caused by the introduction of the faulttolerance mechanism. First, we focus on load instruction [21]. And then, we propose to exploit instruction redundancy as well as time redundancy. 3.2.1 Redundant memory access removal

Load instructions would diminish the performance of the proposed fault-tolerant processor due to the following reason. An execution of a load consists of address calculation and memory access, and thus the execution latency of a load instruction is longer than any others, while reissued load instructions may always hit in the L1 cache. This will put pressure on the RUU capacity. Based on these observations, we investigate a way to eliminate the possible bottleneck. We remove redundant memory accesses performed by

Value Hit

Figure 3: Reuse table reissued load instructions. The original mechanism executes every load instruction twice. Both address calculation and memory access are performed twice. Since the data cache can be protected by parity or ECC, it is not necessary to detect faults in the data cache using the instruction reissue. We reissue only the address calculation but perform the memory access once. Thus, the protected portion is revised as depicted in Figure 2, while the data cache should be protected by parity or ECC, which is common for modern microprocessors. One of the possible demerits of the revise is that any faults on the data cache busses cannot be detected. We evaluated the removal of redundant memory accesses in [21] and found there is still considerable performance overhead. 3.2.2

Exploiting instruction redundancy

Instruction reuse [10,24] is a technique, which eliminates redundant computations by utilizing instruction redundancy. Instruction redundancy is a characteristic of programs: Dynamic instances of a static instruction are executed with the same operand values many times. Thus, if the previous computation is kept in a table, the next same computation can be eliminated by looking up the table. Figure 3 depicts the reuse table studied in this paper. It resembles caches, and its each entry has an opcode eld, two operand elds, and an outcome eld. It is a direct-mapped table and indexed by a function of a combination of two operands. In this paper, we use the simple function: operand1 xor (not operand2). The reuse table keeps registerwriting instructions and store instructions. In the case of load and store instructions, address calculation is the object of instruction reuse. When every instruction is executed, its computation is registered in the reuse bu er regardless that it is speculative or not. After that, when an instruction's operands are available, the reuse bu er is referred. Because we use the reuse bu er at the execution stage, no performance gain is obtained for instructions with short latency. Instead, we exploit instruction re-

dundancy for fault tolerance. Thus, the amount of time to access the cache-like structure is not a problem. It is only required that the access time is less than the amount of time to execute every instruction twice redundantly. In order to use the reuse bu er for fault tolerance, its registration policy should be changed. When every instruction is committed, its computation is registered in the reuse bu er. While the registration in the commit stage delays re-usability, it is necessary since the reuse bu er should keep only veri ed execution results and our tolerance mechanism checks errors in the commit stage. An advantage of utilizing the reuse bu er for fault tolerance is that it can be protected by using parity or ECC since the reuse bu er is a memory, and transient faults cannot a ect the reuse bu er. When every instruction is executed, the reuse bu er is referred in parallel. If the previous execution result is obtained from the reuse bu er, the instruction should not be reissued in order to check the occurrence of transient faults but its execution result from a function unit is compared with the one from the reuse bu er, and its latency is signi cantly reduced so that the overheads due to fault tolerance is also reduced. While the reuse bu er is protected by parity or ECC, there may be possible transient fault at its logic and busses. Then, the instruction should be executed in the functional unit in parallel with referring the reuse bu er. It should be noted that branch instructions are not covered by the reuse bu er. While every branch should be executed twice, we expect that branch prediction helps to tolerate the latency.

3.3 Transparent fault recovery

Even when fault detection is successful, a system provided with no scheme for recovery will usually hang, causing application down. Recovery can be handled by either OS or hardware. In this section, we explain two transparent hardware-based recovery schemes. One uses the existing speculation recovery mechanism for mispredicted branches [1, 15, 20], and the other is based on the instruction reissue mechanism for incorrect data speculation [20]. In this paper, we assume the failure is transient, and thus instruction retry is successful. That is, when a fault is detected by the instruction reissue mechanism described in the previous section, re-executing the fault instruction is sucient. If we utilize the recovery mechanism for mispredicted branches, when a transient fault is detected the microprocessor ushes its pipeline and then restarts at the corresponding instruction. All instructions following the fault instruction are squashed and thus the penalty is very large. However, it is expected that performance degradation will be small since the frequency of transient faults is low [15].

On the other hand, the fault recovery mechanism utilizing the instruction reissue exploits its ability of selective squashing. As the mechanism reissues only misspeculated instructions when a data dependence misprediction occurs, we reissue only instructions dependent upon a fault instructions. That is, a fault is regarded as a misspeculation. We have already know that the instruction reissue mechanism su ers less penalties from mispredicted data speculation than the instruction squashing mechanism [30], performance degradation will be further reduced. 4 Evaluation Environment

In this section, we describe our evaluation environment by explaining a processor model and benchmark programs.

4.1 Processor model

We implemented a timing simulator using SimpleScalar/Alpha tool set (ver.3.0a) [3]. We evaluate 4- and 8-way out-of-order execution superscalar processors. Dynamic instruction scheduling is based on the RUU which has 64 entries. Each functional unit can execute any operation. The latency for execution is 1 cycle except in the cases of multiplication (4 cycles) and division (12 cycles). A non-blocking, 128KB, 32B block, 2-way set-associative L1 data cache is used for data supply. The numbers of ports are 2 and 4 in the 4- and 8-way superscalar processor models, respectively. The data cache has a load latency of 1 cycle after the data address is calculated and a miss latency of 6 cycles. It has a backup of an 8MB, 64B block, direct-mapped L2 cache which has a miss latency of 18 cycles for the rst word plus 2 cycles for each additional word. No memory operation that follows a store whose data address is unknown can be executed. A 128KB, 32B block, 2-way set-associative L1 instruction cache is used for instruction supply and also has the backup of the L2 cache which is shared with the L1 data cache. For control prediction, a 1K-entry 4way set associative branch target bu er, a 4K-entry gshare-type 2-level adaptive branch predictor, and an 8-entry return address stack are used. The branch predictor is speculatively updated at the instruction decode stage.

4.2 Benchmark programs

The SPEC2000 benchmark suite is used for this study. Table 1 lists the benchmarks and the input sets. We use the object les provided by the University of Michigan. For each program except for 252.eon, 1 billion instructions are skipped before actual simulation begins. Each program is executed to completion or for 100 million instructions. Table 1 also shows the number of instructions executed and execution cycles. We count only committed instructions.

100

100 no_mem

reuse

baseline

80

%Execution cycles

%Execution cycles

baseline

60 40 20 0

no_mem

reuse

80 60 40 20

gzip

vpr

gcc

crafty

parser

eon

vortex

bzip2 average

0

gzip

vpr

gcc

crafty

parser

eon

vortex

bzip2 average

(i) 4-way superscalar (ii) 8-way superscalar Figure 4: %Increase in execution cycles Table 1: Benchmark programs program gzip vpr gcc crafty parser eon vortex bzip2

input set

#inst.s

input.compressed net.in arch.in cccp.i crafty.in test.in chair lendian.raw input.random

100.0M 100.0M 100.0M 100.0M 100.0M 94.0M 100.0M 100.0M

#cycles 4-way 8-way 43.0M 31.1M 48.2M 37.2M 54.5M 41.4M 43.4M 29.2M 49.0M 36.6M 39.2M 23.8M 41.2M 26.5M 34.8M 18.7M

5 Simulation Results

This section presents our simulation results. First, we show how signi cantly performance loss is mitigated. Next, we evaluate the sensitivity of the number of table entry on performance. And last, our approach will be compared with a space redundant technique based on a chip multiprocessor (CMP) [13].

5.1 Processor performance

We use execution cycles for evaluating processor performance and the gures present the percent increase of the cycles. In this paper, we do not assume any transient faults occur but we only evaluate performance penalty caused by introducing the proposed mechanism. Therefore, the impact of the fault recovery mechanism on performance is not evaluated. For each group of three bars for every program, the left bar labeled with baseline in Figure 4 shows the performance degradation due to the duplication of all committed instructions in the cases of 4- and 8-way superscalar processors. As can be easily seen, performance of the 4-way superscalar is diminished signi cantly, while it is smaller than the case in which the program is executed twice and the results are compared. It is reduced by an average of 73.0%. On the other hand, the performance degradation of the 8-way superscalar is moderate: an average of 47.9%. The major reason is the increasing latency of in-

Table 2: Commitment latency (cycles) : 4-way prog gzip vpr gcc crafty parser eon vortex bzip2

base line 31.0 21.4 21.5 27.9 25.6 34.7 35.2 43.8

no mem 26.5 18.4 17.8 23.8 21.8 29.2 29.5 37.8

1K 21.1 15.0 13.5 17.9 16.0 21.5 21.3 28.0

reuse 2K 4K 20.8 20.8 14.9 14.8 13.5 13.5 17.7 17.6 15.9 15.9 21.4 21.3 21.2 21.2 27.8 27.7

1M 20.8 14.6 13.3 17.0 15.7 21.0 20.8 27.3

ideal 14.9 10.0 9.54 13.2 12.2 16.4 16.9 21.5

Table 3: Commitment latency (cycles) : 8-way prog gzip vpr gcc crafty parser eon vortex bzip2

base line 18.2 12.9 12.3 15.2 14.6 19.2 18.9 22.0

no mem 16.5 11.6 10.6 13.3 12.8 16.6 16.1 19.0

1K 14.9 10.9 9.56 12.0 11.6 15.0 14.2 17.0

reuse 2K 4K 14.8 14.8 10.8 10.7 9.53 9.51 12.0 11.9 11.6 11.5 15.0 14.9 14.1 14.1 16.9 16.8

1M 14.7 10.7 9.45 11.6 11.5 14.8 14.0 16.6

ideal 11.8 8.28 7.13 8.50 8.96 9.95 10.0 11.0

structions until commitment [21]. Each reissued instruction stays in the instruction window longer than in the case of the processor without fault tolerance. The baseline columns in Tables 2 and 3 summarize clock cycles where each instruction stays in the RUU. The commitment latency is very large especially for the 4-way superscalar. This increases the execution cycles of the processor models utilizing the baseline fault-tolerance mechanism. The goal of this paper is to mitigate the performance loss. Next, we will show the e ect of removing redundant memory accesses. After that, we will evaluate the use of the reuse table. Figure 4 also explains how memory accesses a ect performance. For each group of three bars, the mid-

100

2K 1K

100

4K 1M

60 40

60 40

20

20 reuse_miss

0

4K 1M

80 %Ratio

%Ratio

80

2K 1K

gzip

vpr

gcc

crafty

parser

eon

vortex

reuse_hit bzip2 average

reuse_miss 0

gzip

vpr

gcc

crafty

parser

eon

vortex

reuse_hit bzip2 average

(i) 4-way superscalar (ii) 8-way superscalar Figure 5: %Reusable instruction ratio dle bar labeled with no mem indicates the increase in execution cycles over the processor without fault tolerance when redundant memory accesses are eliminated. It is 51.1% and 33.0% for the 4- and 8-way models, respectively. In other words, the elimination reduces the overhead by 30.0% and 31.1% for the 4- and 8way models, respectively. This means that the long execution latency is one of the main sources of the overhead. In other words, the pressure on the RUU capacity should be mitigated. The no mem columns in Tables 2 and 3 show the commitment latencies when redundant memory accesses are removed. We can nd that the latencies are also reduced. In this evaluation, we use 1M-entry direct-mapped reuse bu er. The table would be too large to realize, but allows us to initially evaluate the use of instruction redundancy ignoring the issues of contention. For each group of three bars for every program, the right bar labeled with reuse in Figure 4 shows the increase in execution cycles in the cases of 4- and 8-way superscalar processors. As can be easily seen, the increase in the 4-way superscalar becomes signi cantly small and is an average of 12.5%. On the other hand, the increase in the 8-way superscalar is a little larger: an average of 20.8%. In other words, exploiting instruction redundant mitigates the performance loss by 82.9% and 56.6% for the 4- and 8-way models, respectively. The reuse(1M) columns in Tables 2 and 3 show the commitment latencies when the 1M-entry reuse table is used. It is con rmed that the decrease in the commitment latency improves processor performance. A reason why the use of instruction redundancy contributes better to the 4-way superscalar than to the 8-way one is that the decrease in the commitment latency a ects e ectively processor performance in the case of the 4-way superscalar because the length of critical paths is longer in the 4-way superscalar than the 8-way one due to availability of functional units. Next, we would compare our proposed faulttolerance mechanism with other ones based on time

redundancy: 2-way redundant superscalar [15], SRT [12], and SRTR [31]. The SRT and SRTR processors are SMT processors based on an 8-way superscalar. On the other hand, the 2-way redundant superscalar is an 8-way superscalar but has only 4 integer ALUs. Thus, hardware cost of the SRT and SRTR is approximately equal to that of our 8-way processor model, and that of the 2-way redundant superscalar is in between those of our 4- and 8-way processors. It should be noted that the SRT processor only detects transient faults but cannot recover processor state. The articles report that both the 2-way redundant superscalar and SRT su ers about 30% performance degradation [12,15], and SRTS performs slightly worse than SRT [31]. In summary, the previous fault-tolerance mechanism based on time redundancy su ers approximately 30% performance loss. In contrast, our proposed mechanism causes 12.5% and 20.8% loss for the 4- and 8-way superscalar processors, respectively.

5.2 Impact of reuse table size

Next, we evaluate how the number of the reuse table entry a ects processor performance. Figure 5 shows the percent reusable instruction ratio. For each group of four bars, the bars from left to right indicate the reusable ratios in the cases where the reuse table has 1K, 2K, 4K, and 1M entries, respectively. Each bar is divided into two parts. The lower part indicates the percentage of instructions that nd its associated entry in the reuse table (ie. reuse table hit). The upper indicates the percentages of instructions that cannot nd its associated entry in the reuse table (ie. reuse table miss). The sum of the two parts is not equal to 100%. The rest indicates the percentage of instructions that do not refer the reuse table such as branch instructions. It can be easily seen that approximately 80% of instructions refer the reuse table. We cannot nd considerable di erence in re-usability between the 4- and 8-way processors, and the hit ratio (ie. reuse table hit / (hit + miss)) increases approximately from 30% for the 1K-entry table to 40% for the

50

50 2K

4K

1M

1K

40

%Execution cycles

%Execution cycles

1K

30 20 10 0

gzip

vpr

gcc

crafty

parser

eon

vortex

bzip2 average

2K

4K

1M

40 30 20 10 0

gzip

vpr

gcc

crafty

parser

eon

vortex

bzip2 average

(i) 4-way superscalar (ii) 8-way superscalar Figure 6: %Increase in execution cycles 1M-entry table. This implies the same computations occur frequently in short periods of cycle time. Figure 6 shows the impact of the reuse table size on performance. For each group of four bars, the bars from left to right indicate the increase in execution cycles over the processor without fault tolerance in the cases where the reuse table has 1K, 2K, 4K, and 1M entries, respectively. The di erence between the cases of the 1K- and 1M-entry reuse tables is small, and the 4-way and 8-way processors with the 1K-entry reuse table performs only 15.4% and 22.7% worse than that without fault tolerance. The reuse columns in Tables 2 and 3 show the commitment latencies in the cases where the 1K-, 2K-, 4K-, and 1M-entry reuse bu ers are used, respectively. The latency changes little when the table size is increased. The ideal columns in Tables 2 and 3 show the commitment latencies of the processor without fault tolerance. In most cases, the di erence in execution cycles between the reuse and ideal cases becomes only few cycles.

5.3 Comparison with chip multiprocessor

Next, we compare our approach with a space redundant technique based on the CMP [2, 13]. The CMP is a complexity-e ective solution for large scale microprocessors in the future. In this evaluation, we use the CMP consisting of two smaller superscalar processors. They execute an identical program respectively and two outcomes of a single instruction is compared. We compare the 4-way superscalar with the CMP consisting of two 2-way superscalars, and the 8-way superscalar with the one consisting of two 4-way superscalars. Hardware resources of the smaller superscalars are half of the baseline model. Thus, total hardware budgets of the time and space redundancy models are approximately same. Please note that only space redundant technique can detect errors in caches, register les, and the RUU. However, they can be protected using parity or ECC in the case of the time redundant technique. Figure 7 presents the results. The execution cycles are used for the com-

parison. For each group of two bars, the left is for the proposed model utilizing time redundancy and instruction redundancy, and the right is for the CMP utilizing space redundancy. The capacity of the reuse table is 1K entries. Please note that the penalties caused by synchronizing two component processors in the CMP are not considered. Hence, the simulation results are favorable for the CMP. It can be easily observed that the proposed time redundancy technique su ers less performance degradation than the space redundancy technique. Thus, our approach is one of the ecient mechanisms for fault-tolerance. 6 Concluding Remarks

The investigation of fault-tolerance techniques for microprocessors is driven by two issues: One regards deep submicron fabrication technologies. Future semiconductor technologies could become more susceptible to alpha particles and other cosmic radiation. The other is the increasing popularity of mobile platforms. Cellular telephones are currently used for applications which are critical to our nancial security, such as mobile banking, mobile trading, and making airline ticket reservations. Such applications demand that computer systems work correctly. In light of this, we proposed the fault-tolerance mechanism for future microprocessors. It is based on the instruction reissue technique for incorrect data speculation recovery, and utilizes time redundancy. Our previous evaluation showed that our proposed mechanism caused considerable performance loss. In this paper, we proposed to exploit instruction redundancy to mitigate the loss. Only instructions that cannot utilize instruction redundancy should be reissued to detect transient faults. We evaluated our proposal using the timing simulator and found that the performance loss can be signi cantly reduced by the instruction reuse mechanism.

Acknowledgments

This work was supported in part by the grant from the Okawa Foundation for Information and Telecommunications (No.01-13) and is supported in

100

100 space

time+insn

80

%Execution cycles

%Execution cycles

time+insn

60 40 20 0

space

80 60 40 20 0

gzip

vpr

gcc

crafty

parser

eon

vortex

bzip2 average

gzip

vpr

gcc

crafty

parser

eon

vortex

bzip2 average

(i)4-way superscalar (ii)8-way superscalar Figure 7: %Increase in execution cycles for two redundancy models part by the Grant-in-Aid for Scienti c Research (B) from the Japan Society for the Promotion of Science (No.13558030). References

[1] T.M.Austin, \DIVA: a reliable substrate for deep submicron microarchitecture design," 32nd Int. Symp. on Microarchitecture, 1999. [2] D. C. Bossen et al., \Fault-tolerant design of the IBM pSeries 690 system using POWER4 processor technology," IBM Jour. Res. & and Develop., vol.46, no.1, 2002. [3] D.Burger and T.M.Austin, \The SimpleScalar tool set, version 2.0," ACM SIGARCH Computer Architecture News, vol.25, no.3, 1997. [4] Compaq Computer Corp., \Data integrity for Compaq NonStop Himalaya servers," White paper, 1999. [5] Fujitsu Ltd., \SPARC64 V microprocessor provides foundation for PRIMPOWER performance and reliability leadership," White paper, 2002. [6] G. Hinton et al., \The microarchitecture of the Pentium 4 processor," Intel Technical Journal, issue Q1, 2001. [7] R.E.Kessler, E.J.McLellan, and D.A.Webb, \The Alpha 21264 microprocessor architecture," Int. Conf. on Computer Design, 1998. [8] S.Kim and A.K.Somani, \SSD: an a ordable fault tolerant architecture for superscalar processors," 8th Int. Symp. on Dependable Computing, 2001. [9] A. Mendelson and N. Suri, \Designing high-performance & reliable superscalar architectures { the out of order reliable superscalar (O3RS) approach," 1st Int. Conf. on Dependable Systems and Networks, 2000. [10] C.Molina and A.Gonzalez, \Dynamic removal of redundant computations," 13th Int. Conf. on Supercomputing, 1999. [11] E.Morancho, J.M.Llaberia, and A.Olive, \Recovery mechanism for latency misprediction," 10th Int. Conf. on Parallel Architectures and Compilation Techniques, 2001. [12] S.S.Mukherjee et al., \Detailed design and implementation of redundant multithreading alternatives," 29th Int. Symp. on Computer Architecture, 2002. [13] K. Olukotun et al., \The case for a single-chip multiprocessor," Int. Conf. on Architectural Support for Programming Languages and Operating Systems VII, 1996. [14] N.Quach, \High availability and reliability in the Itanium processor," IEEE Micro, vol.20, no.5, 2000.

[15] J.Ray, J.C.Hoe, and B.Falsa , \Dual use of superscalar datapath for transient-fault detection and recovery," 34th Int. Symp. on Microarchitecture, 2001. [16] S.K.Reinhardt and S.S.Mukherjee, \Transient fault detection via simultaneous multithreading," 27th Int. Symp. on Computer Architecture, 2000. [17] E.Rotenberg et al., \Trace processors," 30th Int. Symp. on Microarchitecture, 1997. [18] E.Rotenberg, \AR-SMT: a microarchitectural approach to fault tolerance in microprocessors," 29th Fault-Tolerant Computing Symposium, 1999. [19] P.I.Rubinfeld, \Managing problems at high speed," IEEE Computer, vol.31, no.1, 1998. [20] T.Sato and I.Arita, \Tolerating transient faults through an instruction reissue mechanism," Int. Conf. on Parallel and Distributed Computing Systems, 2001. [21] T.Sato and I.Arita, \In search of ecient reliable processor design," 30th Int. Conf. on Parallel Processing, 2001. [22] T.Sato, \Evaluating the impact of reissued instructions on data speculative processor performance," Microprocessors and Microsystems, vol.25, issue 9, 2002. [23] N. Saxena et al., \Error detection and handling in a superscalar, speculative out-of-order execution processor system," 25th Fault-Tolerant Computing Symposium, 1995. [24] A. Sodani and G. S. Sohi, \Dynamic instruction reuse," 24th Int. Symp. on Computer Architecture, 1997. [25] G.S.Sohi et al., \A study of time-redundant fault tolerance techniques for high-performance pipelined computers," 19th Fault-Tolerant Computing Symposium, 1989. [26] G.S.Sohi, \Instruction issue logic for high-per- formance, interruptible, multiple functional unit, pipelined computers," IEEE Trans. Comput., vol.39, no.3, 1990. [27] A.K.Somani and J.Nickel, \REESE: a method of soft error detection in microprocessors," 2nd Int. Conf. on Dependable Systems and Networks, 2001. [28] L.Spainhower and T.A.Gregg, \IBM S/390 parallel enterprise server G5 fault tolerance: a historical perspective," IBM Jour. Res. & Develop., vol.43, no.5/6, 1999. [29] D.M.Tullsen, S.J.Eggers, and H.M.Levy, \Simultaneous multithreading: maximizing on-chip parallelism," 22nd Int. Symp. on Computer Architecture, 1995. [30] G.Tyson and T.M.Austin, \Improving the accuracy and performance of memory communication through renaming," 30th Int. Symp. on Microarchitecture, 1997. [31] T.N.Vijaykumar, I.Pomeranz, and K.K.Cheng , \Transient fault recovery using simultaneous multithreading," 29th Int. Symp. on Computer Architecture, 2002.