Real-Time non-Intrusive Profiler

Untitled document

A company develops and markets high-end hand-held consumer devices. The devices work well, but are slow, compromising the user experience. Due to the nature of the devices, traditional software-based profiling is not an option. There are also no hardware-based solutions available.

Profiling a device is simple in theory. Just monitor address and data buses,as well as some control signal, match the addresses to the linker map, and produce statistics.

But: the device uses a clock frequence of 12.5 MHz, and for each clock cycle eight bytes need to be monitored, generating 100 MB per second, more than can be handled by standard PC hardware.

The solution, developed by SDU, is to use an FPGA to reduce the amount of data:

  • Drop information about sequential program execution. Save only information about jumps.
  • Most jumps are short. Pack these efficiently.

The resulting data rate is about 1.5 MB per second.

The solution, developed by SDU, includes

  • An FPGA that monitors 60+ signals, filters and packs them, and puts the resulting data into a FIFO
  • A microproocessor, running Linux, that reads data from the FPGA and makes it available over TCP/IP.
  • A connector board between the device and the FPGA.
  • Software to read data over TCP/IP and to analyze it.