01.12.2012 Views

Architecture of Computing Systems (Lecture Notes in Computer ...

Architecture of Computing Systems (Lecture Notes in Computer ...

Architecture of Computing Systems (Lecture Notes in Computer ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Exploit<strong>in</strong>g Inactive Rename Slots for Detect<strong>in</strong>g S<strong>of</strong>t Errors 129<br />

3 Us<strong>in</strong>g Dependency Check<strong>in</strong>g Logic for S<strong>of</strong>t Error Detection<br />

Although superscalar processors are designed for high throughput, pipel<strong>in</strong>e width is<br />

not fully used from time to time. As the pipel<strong>in</strong>e <strong>of</strong> the processor is not filled with<br />

<strong>in</strong>structions to its capacity, the number <strong>of</strong> simultaneously renamed <strong>in</strong>structions is<br />

reduced. This fact was previously observed by Moshovos and was exploited to reduce<br />

the complexity and the power dissipation <strong>of</strong> the rename table [9].<br />

When the number <strong>of</strong> concurrently renamed <strong>in</strong>structions is below the processor rename<br />

width, dependency check<strong>in</strong>g logic <strong>of</strong> the rename stage is not employed to its<br />

capacity. The comparators that are wired to the empty <strong>in</strong>struction slots dur<strong>in</strong>g this<br />

period stay idle and generally are not used for any purpose. Therefore dur<strong>in</strong>g the<br />

times when the processor is not us<strong>in</strong>g all <strong>of</strong> its rename slots, these comparators can be<br />

used to detect s<strong>of</strong>t errors that occur on the register tags <strong>of</strong> the <strong>in</strong>structions when they<br />

are pass<strong>in</strong>g through the frontend <strong>of</strong> the processor.<br />

Value replication is a long time known and used technique for reliability. Although<br />

it is possible to detect s<strong>in</strong>gle bit errors <strong>in</strong> a value by add<strong>in</strong>g a s<strong>in</strong>gle parity bit, replicat<strong>in</strong>g<br />

the value can detect and possibly correct multiple errors if there are enough<br />

copies <strong>of</strong> the value. Errors can be detected with one redundant copy <strong>of</strong> a value and<br />

can be corrected with two redundant copies through simple vot<strong>in</strong>g [2]. More than<br />

three copies <strong>of</strong> the same data leads to a stronger protection as there will be more<br />

chances to recover from an error.<br />

Instruction replication was proposed and implemented <strong>in</strong> different ways to cope<br />

with s<strong>of</strong>t errors <strong>in</strong> the past. Redundant multithread<strong>in</strong>g was proposed to replicate the<br />

whole thread runn<strong>in</strong>g on the processor to detect any s<strong>of</strong>t errors [11][13][19]. While it<br />

<strong>of</strong>fers a system level protection, replicat<strong>in</strong>g each and every <strong>in</strong>struction <strong>in</strong> a program<br />

results <strong>in</strong> some performance degradation as processor resources are divided <strong>in</strong>to two<br />

to execute <strong>in</strong>structions from both the lead<strong>in</strong>g and the trail<strong>in</strong>g threads.<br />

Selectively replicat<strong>in</strong>g most vulnerable <strong>in</strong>structions and processor structures have<br />

been proposed as a good trade<strong>of</strong>f between performance degradation and fault coverage.<br />

However, most <strong>of</strong> the previous approaches have concentrated on protect<strong>in</strong>g the<br />

backend structures <strong>of</strong> the processor such as the functional units, the issue queue or the<br />

reorder buffer [2][7][18].<br />

In this paper we propose to replicate the register tags <strong>of</strong> the <strong>in</strong>structions <strong>in</strong>to the<br />

register tag fields <strong>of</strong> the unused <strong>in</strong>struction slots and use the idle comparators <strong>of</strong> the<br />

dependency check<strong>in</strong>g logic to detect and correct s<strong>of</strong>t errors that occur <strong>in</strong> the frontend<br />

<strong>of</strong> the processor.<br />

3.1 Protect<strong>in</strong>g the Tags <strong>of</strong> a S<strong>in</strong>gle Instruction<br />

When there is only one <strong>in</strong>struction flow<strong>in</strong>g through the pipel<strong>in</strong>e, all <strong>of</strong> the hardware<br />

resources can be used for this s<strong>in</strong>gle <strong>in</strong>struction. It is possible to detect the errors on<br />

both the source tags and dest<strong>in</strong>ation register identifier if the pipel<strong>in</strong>e width is at least<br />

4, without add<strong>in</strong>g any additional comparator circuit. In order to maximize the error<br />

coverage, the tags <strong>of</strong> the s<strong>in</strong>gle runn<strong>in</strong>g <strong>in</strong>struction is copied to the empty fields <strong>of</strong> the<br />

unused slots as shown <strong>in</strong> Fig. 2 as early as possible <strong>in</strong> the pipel<strong>in</strong>e. This copy<br />

operation is mostly likely to happen when the <strong>in</strong>struction is decoded. Also the copies<br />

may be ready right after fetch<strong>in</strong>g if a trace cache, where decoded <strong>in</strong>stances <strong>of</strong> the

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

Saved successfully!

Ooh no, something went wrong!