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.

128 M. Kayaalp et al.<br />

In a superscalar processor, the rename table has multiple ports to allow the renam<strong>in</strong>g<br />

<strong>of</strong> multiple <strong>in</strong>structions per cycle. Every <strong>in</strong>struction that is renamed together <strong>in</strong> the<br />

same cycle needs to acquire a free register from the free list, update the rename table<br />

and read the mapp<strong>in</strong>gs for its source operands concurrently. S<strong>in</strong>ce some <strong>of</strong> the <strong>in</strong>structions<br />

that are renamed <strong>in</strong> the same cycle are dependent on each other with WAR<br />

or WAW hazards, <strong>in</strong>structions may try to write to the same entry <strong>of</strong> the rename table<br />

<strong>in</strong> the same cycle or an <strong>in</strong>struction may need to wait for a previous <strong>in</strong>struction to update<br />

the rename table before it can read the mapp<strong>in</strong>gs for its source operands. This<br />

k<strong>in</strong>d <strong>of</strong> sequential access to the rename table may either <strong>in</strong>crease the cycle time or<br />

may not be even possible due to some design choices. Therefore register renam<strong>in</strong>g<br />

stage <strong>of</strong> the pipel<strong>in</strong>e <strong>in</strong>cludes a dependency check<strong>in</strong>g logic to detect <strong>in</strong>tragroup dependencies.<br />

INSTRUCTION 1<br />

Dest<strong>in</strong>ation<br />

Source-1<br />

Source-2<br />

C1<br />

C2<br />

C3<br />

=<br />

=<br />

=<br />

C6<br />

INSTRUCTION 2<br />

Dest<strong>in</strong>ation<br />

Source-1<br />

Source-2<br />

C4<br />

C5<br />

=<br />

=<br />

=<br />

Fig. 1. Comparison circuitry <strong>of</strong> the rename logic<br />

INSTRUCTION 3<br />

Dest<strong>in</strong>ation<br />

Source-1<br />

Source-2<br />

Fig. 1 shows the structure <strong>of</strong> the dependency check<strong>in</strong>g logic for a mach<strong>in</strong>e that renames<br />

3 <strong>in</strong>structions concurrently. There are multiple comparator circuits that compare<br />

the dest<strong>in</strong>ation and source tags <strong>of</strong> all concurrently renamed <strong>in</strong>structions. Each<br />

<strong>in</strong>struction’s dest<strong>in</strong>ation architectural register tag is compared to the source operand<br />

and dest<strong>in</strong>ation tags <strong>of</strong> all <strong>of</strong> the subsequent <strong>in</strong>structions. In case <strong>of</strong> a match, the<br />

physical register mapp<strong>in</strong>g correspond<strong>in</strong>g to the source operand <strong>of</strong> the subsequent<br />

<strong>in</strong>struction is obta<strong>in</strong>ed from the dest<strong>in</strong>ation physical register field <strong>of</strong> the preced<strong>in</strong>g<br />

<strong>in</strong>struction rather than be<strong>in</strong>g read from the rename table. This way a serial write and<br />

read operation is avoided. Similarly, <strong>in</strong> order to avoid updat<strong>in</strong>g the same rename table<br />

entry multiple times <strong>in</strong> a s<strong>in</strong>gle cycle, dest<strong>in</strong>ations <strong>of</strong> all <strong>of</strong> the <strong>in</strong>structions are compared<br />

aga<strong>in</strong>st each other. If a match is detected, only the youngest <strong>in</strong>struction is allowed<br />

to update the rename table. The match/mismatch signals that are produced by<br />

the comparators C1…C9 are fed <strong>in</strong>to the priority decoders to control the access <strong>of</strong> the<br />

<strong>in</strong>structions to the mapp<strong>in</strong>g table.<br />

C7<br />

C8<br />

C9<br />

=<br />

=<br />

=

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

Saved successfully!

Ooh no, something went wrong!