.. post:: Aug 30, 2018
:tags: Hardware
:author: Pashmina Cameron
.. _page-dsa:
Domain Specific Architectures (DSAs)
====================================
Certain applications have sufficient demand to lead to the ultimate optmization
technique - designing hardware targeted at that one application.
Examples of this include:
* Cryptography accelerators
* Compression gngines
* Block chain hashers
* Neural networks
In reality, many DSAs are targeting fast moving application areas, and as
such a trade off is made between fixed purpose hardware and some level of
programablility. However, these devices are still not suited for totally
general purpose usage like A CPU. Devices in this category include
* Network switch processors. This is a big area with a lot of interesting
architecture, but in most cases they are not suitable for accelerating
workloads not closely coupled to network routing / filtering.
* `Intel's Exascale Dataflow engine `_ (hard to tell how domain specific this is yet)
* Vector processors such as Nec SX-Aurora.
A particularly big growth area for DSA is around neural networks:
* `Graphcore's AI processor `_
* `Google TPU `_ - Detailed description in Hennesy and Patterson.
* `ARM ML processors `_
* `Mythic `_ - An unsual hardware approach doing inference in the analog domain.
Many other NN accelerators are under development or already on the market, see Wikipedia `AI accelerator `_
Another big area is image processing DSAs which have been around for a long
time. Recent progress has been towards making them more programable and
flexible.
* `Google Visual Core `_.
* Most mobile SoCs have some level of programmable image processor.
Programming DSAs
----------------
The wide variety of different DSA architectures typically means that the
method used to work with each device is through a library. Examples include
Tensorflow for Google's TPU.
Some DSAs have more general programing approaches such as
`Halide `_ for the Google Visual Core