A look at first-in, first-out design tradeoffs.
As designs move to finFET process nodes, dynamic power reduction has become a requirement. Designers have to eliminate or minimize all sources of redundant switching activity in order to reduce dynamic power in the design.
In our last blog, we looked at dynamic power wastage due to redundant adders and multipliers and how to gate these operators to save power. We also mentioned a couple of methods for gating these operators and the tradeoffs between them. In this blog, we discuss a few things to keep in mind when designing FIFOs for maximum power efficiency.
FIFO, or first-in, first-out, is a common data structure in any hardware design. It is usually “n” stages long. An n-stage FIFO is used if the data that gets stored in the first clock cycle is to be used only after “n” clock cycles. An n-stage FIFO typically has a read pointer, write pointer, and storage for “n” stages. How can this data structure be optimized for power? Before we answer this question let us look at how a FIFO can be implemented.
A FIFO can be implemented in two ways:
Which method is better for power? Obviously the first one is easier to implement. However, when the data moves from one stage to the next, there is a lot of redundant switching activity. The power penalty is greater if the FIFO is very long. In the second method, there is a fixed penalty for switching the read pointers and write pointers. But the data switching is minimized to only what is needed. We can even minimize the redundant switching of read and write pointers by using Gray-coding to ensure one bit switching between consecutive addresses.
In summary, we have explained a couple of ways to implement a FIFO and what to look for when doing trade-off analysis between these implementations. There are additional microarchitecture techniques that require similar analysis to understand how they can be used for low power designs. Analyzing and using appropriate microarchitectures not only results in the lowest power, but has a low impact on performance and area. This avoids trading off performance or area for power at a later stage in the design.
Calypto will be offering free tutorials on “Low Power Microarchitecture for FinFET Designs” during the upcoming DAC. To register for one of these sessions, please follow this link. In this blog, we outlined the trade-offs associated with one of the microarchitecture techniques for low power. Are you aware of all the microarchitecture choices for your low power design?