A buffer is a fast cycle added to a pipeline. It is typically, but not necessarily, nonfunctional except for its buffering duties. There are three reasons for adding buffer cycles to a pipeline. The first is to enhance the throughput of a pipeline composed of variable throughput cycles. The second is to synchronize variable throughput behavior with constant throughput behavior. These first two reasons are the subject of this chapter.
The third reason for adding buffer cycles to a pipeline is to optimize the throughput of a structurally bounded pipeline, which is the subject of the next three chapters.
11.1 ENHANCING THROUGHPUT
Adding buffer cycles enhances the throughput of a pipeline composed of variable throughput cycles . As was pointed out in the last chapter, the throughput of a pipeline tends to the worst-case throughput of its component cycles. The idea is to bring the throughput of the pipeline closer to the average case throughput of its component cycles. A buffer cycle in this instance is a cycle whose period is always equal to or faster than the fastest period of the variable throughput cycles. In this circumstance there is no advantage to a buffer cycle being faster than the fastest period of the variable throughput cycles. Faster buffer ...