I follow a course on CPU architectures and I'm making exercises at the moment. Now I encountered the word "depth of a pipeline" in one of the exercises, but I don't know what's meant by the depth of a pipeline. Is it the number of stages of the pipeline or something else? I can't find it anywhere in the syllabus.
1 Answer
I think that depth is a measure of the overlapping of instructions while number of stages is a hardware constant. When you increase the number of stages, you usually make the CPU faster but it is with dimishing margin. See Almdahl's law about this and the book "Computer Organization and Design" by Pattersson and Hennesay.
The more stages, the larger the depth but it is stated that there can be optimal number of stages or optimal depth:
According to (M.S. Hrishikeshi et. al. the 29th International Symposium on Computer Architecture)
The difference between pipeline depth and pipeline stages; is the Optimal Logic Depth Per Pipeline Stage which about is 6 to 8 FO4 Inverter Delays. In that, by decreasing the amount of logic per pipeline stage increases pipeline depth, which in turn reduces IPC due to increased branch misprediction penalties and functional unit latencies. In addition, reducing the amount of logic per pipeline stage reduces the amount of useful work per cycle while not affecting overheads associated with latches, clock skew and jitter. Therefore, shorter pipeline stages cause the overhead to become a greater fraction of the clock period, which reduces the effective frequency gains.
-
1$\begingroup$ Thank you! It's a little more complicated than I thought... $\endgroup$ Commented Apr 24, 2016 at 15:16
-
$\begingroup$ @PieterVerschaffelt yes, it is possible with a situation where you increase the number of stages while depth doesn't increase, so they are not exactly the same measure. There is not much documentation about it. $\endgroup$ Commented Apr 24, 2016 at 15:53