State Attributes - Although selecting state attributes is an offline process, the resulting state attributes must be sensed by adding the appropriate hardware (e.g., a counter, a read port, etc.). However small this may be, as the number of metrics of interest increase (e.g., to support more than one possible objective function), so will the aggregate hardware overhead. In general, the solution will be a compromise in the number of observable state attributes, driven by potential gains vs. area and complexity. Fortunately, the CMAC structure that stores the Q-values (the main storage overhead) is itself attribute-agnostic-the differentiation across objective function resides in what attributes are actually sensed, but the indexing into the CMAC is identical regardless of the attribute [17]. Thus, we can easily add multiplexers to steer the right set of attributes to the CMAC depending on the target objective function.