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 127<br />

Almost all contemporary processors use register renam<strong>in</strong>g <strong>in</strong> order to cope with<br />

false data dependencies with the exception <strong>of</strong> Sun’s Ultra Sparc [16]. Use <strong>of</strong> register<br />

renam<strong>in</strong>g mandates the use <strong>of</strong> a mapp<strong>in</strong>g table and a renam<strong>in</strong>g logic where a free<br />

register is assigned to each result-produc<strong>in</strong>g <strong>in</strong>struction and the dependent <strong>in</strong>structions<br />

get this <strong>in</strong>formation <strong>in</strong> the same cycle. This logic <strong>in</strong>cludes dependency check<strong>in</strong>g logic,<br />

which conta<strong>in</strong>s a number <strong>of</strong> comparators to compare each and every dest<strong>in</strong>ation register<br />

tag with the source register tags <strong>of</strong> the subsequent <strong>in</strong>structions that are renamed <strong>in</strong><br />

the same cycle. Because <strong>of</strong> the fact that the processor pipel<strong>in</strong>e is not filled to its capacity<br />

every cycle, the comparators <strong>of</strong> the dependency check<strong>in</strong>g logic are not always<br />

utilized.<br />

In this paper we propose techniques that leverage the <strong>in</strong>efficient utilization <strong>of</strong> the<br />

comparison logic <strong>in</strong> the renam<strong>in</strong>g stage <strong>of</strong> the pipel<strong>in</strong>e to detect transient errors that<br />

occur <strong>in</strong> the frontend <strong>of</strong> the processor. When the full pipel<strong>in</strong>e width is not used it is<br />

possible to protect the register tags <strong>of</strong> the <strong>in</strong>structions by replicat<strong>in</strong>g the register tags<br />

<strong>in</strong>to the unused fields <strong>of</strong> the subsequent <strong>in</strong>struction slots. We then use this redundant<br />

<strong>in</strong>formation by employ<strong>in</strong>g the already available comparator circuits <strong>of</strong> the rename<br />

logic to detect any errors that occur until the <strong>in</strong>struction reaches the rename stage. In<br />

order to improve the error coverage we also extend our scheme to replicate the tag<br />

data to subsequent cycles where rename stage resources are idle.<br />

2 Register Renam<strong>in</strong>g<br />

Register renam<strong>in</strong>g is a widely used technique to remove false data dependencies. The<br />

false data dependencies occur because <strong>of</strong> the <strong>in</strong>sufficient number <strong>of</strong> architectural<br />

registers that the processor <strong>of</strong>fers to the compiler. When the compiler runs out <strong>of</strong><br />

registers, it uses the same architectural register multiple times <strong>in</strong> short <strong>in</strong>tervals,<br />

which creates a false write-after-write (WAW) or write-after-read (WAR) dependency<br />

between the <strong>in</strong>structions that are <strong>in</strong> fact not related at all. Modern processors solve<br />

this problem by employ<strong>in</strong>g a large physical register file and mapp<strong>in</strong>g the logical register<br />

identifiers produced by the compiler to these physical registers. Consequently a<br />

processor that makes use <strong>of</strong> the register renam<strong>in</strong>g technique needs more physical<br />

registers than the number <strong>of</strong> architectural registers to ma<strong>in</strong>ta<strong>in</strong> forward progress [16].<br />

A mapp<strong>in</strong>g table is ma<strong>in</strong>ta<strong>in</strong>ed <strong>in</strong> order to po<strong>in</strong>t out the location <strong>of</strong> the value that<br />

belongs to each architectural register. This mapp<strong>in</strong>g table is called the “Register alias<br />

table (RAT)” or <strong>in</strong> short “rename table” and it conta<strong>in</strong>s an entry for each architectural<br />

register that holds the correspond<strong>in</strong>g physical register that holds the last <strong>in</strong>stance <strong>of</strong><br />

the architectural register [6].<br />

Each result-produc<strong>in</strong>g <strong>in</strong>struction that enters the renam<strong>in</strong>g stage <strong>of</strong> the processor<br />

checks the availability <strong>of</strong> a physical register from a list <strong>of</strong> free registers. If a free register<br />

is available, the <strong>in</strong>struction grabs the register and updates the correspond<strong>in</strong>g<br />

entry <strong>in</strong> the rename table. In some implementations <strong>of</strong> the register renam<strong>in</strong>g, the <strong>in</strong>struction<br />

has to read and hold the previous mapp<strong>in</strong>g <strong>of</strong> its dest<strong>in</strong>ation architectural<br />

register <strong>in</strong> order to recover from branch mispredictions or free the physical register<br />

that holds the previous value <strong>of</strong> the architectural register [6]. Each <strong>in</strong>struction also has<br />

to read the physical register identifiers that correspond to the architectural registers<br />

that it uses as source operands from the rename table.

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

Saved successfully!

Ooh no, something went wrong!