< previous page page_75 next page >

Page 75
2. Partition the actions into approximately Sopt segments.
d87111c01013bcda00bb8640fdff6754.gif
We begin by partitioning the actions into possible segments (Figure 2.12(a)), using as a rough rule (not a maximum) the expected time per segment,
d87111c01013bcda00bb8640fdff6754.gif
Tseg = time per segment = 10.0 ns.
d87111c01013bcda00bb8640fdff6754.gif
We label each stage with the principal action that occurs within it.
d87111c01013bcda00bb8640fdff6754.gif
Note that some stages (e.g., 2 and 3) will not "fit" into the target Tseg = 10 ns, but they do not greatly exceed Tseg.
3. We now compute the total instruction execution time based on several trial cycle times.
d87111c01013bcda00bb8640fdff6754.gif
In the preceding partition, the worst stage delay was 13 ns (stage 2), excluding clocking effects. So now let us use Tseg = 13 ns:
Dt
=
cycle time = max stage time + overheads
=
(1 + k)Tseg + C
=
(13 ns)(1.05) + 4 = 17.65 ns
Tinst
=
(stages)(Dt) = (9)(17.65 ns)
Tinst
=
159 ns.

d87111c01013bcda00bb8640fdff6754.gif
We could also try a minimum partition of (say) Tseg = 9 ns:
Dt
=
a stage time + overheads
=
9(1.05) + 4 = 13.5 ns
Tinst
=
(stages that fit in 9 ns)(Dt) + (stages that do not fit) (2Dt)
=
(3)(13.5) + (6)(2)(13.5)
Tinst
=
202.5 ns.

d87111c01013bcda00bb8640fdff6754.gif
At the other extreme, if we tried a coarser partition such as Tseg = 20 ns, we would have Figure 2.12(b), which creates a cycle of:
d87111c01013bcda00bb8640fdff6754.gif
Dt = (20 ns)(1.05) + 4 = 25 ns
d87111c01013bcda00bb8640fdff6754.gif
and a total instruction execution time of:
d87111c01013bcda00bb8640fdff6754.gif
Tinst = (5 stages)(25 ns/stage) = 125 ns.
4. We now compute the expected performance G in million instructions per second for each trial cycle used previously.
d87111c01013bcda00bb8640fdff6754.gif
The performance for each partition can be computed:
0075-01.gif

 
< previous page page_75 next page >