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.

This chapter describes underlying principles and inference rules within the SDSoC system compiler to assist the programmer in controlling the compiler to improve overall system performance through
  • 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.