From WikiChip
Revision as of 22:21, 6 November 2018 by David (talk | contribs)

An accelerator or an offload engine is a piece of specialized hardware circuitry that implements various functions in order to perform a set of operations with higher performance or greater energy efficiency than a general-purpose microprocessor. The use of accelerators by software to speed up various operations is called hardware acceleration. Accelerators are used to significantly improve the performance of certain workloads. They are often a separate component attached to a system, but may also be integrated directly into the processor, sometimes in the form of an ISA extension.

A unique subset of accelerators are also called coprocessors. The distinction lies in how an accelerator interact with the host processor. Whereas a co-processor is typically connected to the internals of the host processor which then passes it instructions to execute, a generic accelerator is typically viewed as an independent I/O device which is programmed though an interface.

Motivation & Overview

The use of accelerators is not a new idea. Already in the 1980s, floating point co-processors were an early example of accelerator adaptation. However, higher integration enabled by Moore's Law allowed companies to incorporate those functionalities onto the host processor, eliminating their purpose. For the next few decades afterward, general-purpose microprocessors continued to improve in single-core performance through Dennard scaling and Moore's Law. Modern SoCs incorporate an array of integrated accelerators for performing tasks such as cryptography and compression acceleration.

However, by the late 2000s Dennard scaling collapsed and single-core performance improvements started diminishing. Those deficiencies sparked renewed interest in accelerators. Accelerators can be implemented in silicon, as in the case of ASICs, or as soft hardware. Because this is hardware that is performing the equivalent of software code executing computationally heavy algorithms, the result is almost always either higher performance or higher power efficiency than what optimized code on a general-purpose microprocessor would be capable of.

Types of accelerators

Generally, accelerators fall into three categories, albeit some fall into more than one.

Performance considerations

A critical parameter when performing performance analysis is speedup which consts of the accelerator's execution time, data transfer time, and sync time with host processor.

Equation t Subscript accelerator Baseline equals t Subscript input Baseline plus t Subscript execution Baseline plus t Subscript output

Where input and output time are the bus transactions including the data transfer and the setup time.

Equation upper S equals t Subscript CPU Baseline minus t Subscript accelerator