Improving System Performance
There are many factors that affect overall system performance. A well-designed system generally balances computation and communication so that all hardware components remain occupied doing meaningful work. Some applications will be compute-bound, and for these, you should concentrate on maximizing throughput and minimizing latency in hardware accelerators. Others may be memory-bound, in which case you might need to restructure algorithms to increase temporal and spatial locality in the hardware, for example, by adding copy-loops or memcopy to pull blocks of data into hardware rather than making random array accesses to external memory.
- An understanding of the data motion network: default behavior and user specification
- Increased system parallelisim and concurrency
- Improved access to external memory from programmable logic
- Increased parallelism in the hardware function
Control over the various aspects of optimization is provided through the use of pragmas in the code. A complete description of the pragmas discussed in this chapter is located in SDSoC Pragma Specification.