These features and advantages of the embodiments will become more fully apparent from the following description and appended claims, or may be learned by the practice of embodiments as set forth hereinafter. As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method, and/or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (e.g., including firmware, resident software, micro-code, etc. stored on a non-transitory computer readable storage medium) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module,” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more non-transitory computer readable storage medium(s) having program code embodied thereon.
Many of the functional units described in this specification have been labeled as modules, in order to more particularly emphasize their implementation independence. For example, a module may be implemented as a logic hardware circuit comprising custom VLSI circuits or gate arrays (e.g., an application specific integrated circuit), off-the-shelf semiconductors such as logic chips, transistors, and/or other discrete components. A module may also be implemented in one or more programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices, or the like.