Author_Institution :
Dept. of Comput. Sci. & Eng., Univ. of California, Riverside, CA, USA
Abstract :
Field-programmable gates arrays (FPGAs) are increasingly used in general-purpose computing platforms to augment microprocessors, enabling runtime loading of coprocessors customized to speed up some applications. Such transmuting coprocessors create new dynamic management problems involving decisions as to when to load a coprocessor, where to place the coprocessor in the FPGA, or which resident coprocessor to replace. We define a transmuting coprocessor problem based on Intel´s FSB-FPGA architecture, with attention on communication and memory contention. We develop an online algorithm to manage coprocessor loading, the AG algorithm, which uses aggregated gains to guide coprocessor load, placement, replacement, and wait decisions. Experiments using embedded system applications, for random, biased, and periodic input application sequences, a range of reconfiguration times, and different FPGA types with different numbers of partial reconfigurable regions, demonstrate that the AG algorithm is robust across a variety of situations. The AG algorithm results are within 15% of an unlimited-size FPGA on average, exhibit a small standard deviation, and show a 1.4times speedup versus a static coprocessor loading approach and a 3times speedup over execution on a microprocessor-only solution.
Keywords :
coprocessors; field programmable gate arrays; AG algorithm; FPGA coprocessors; Intel FSB-FPGA architecture; dynamic loading; dynamic management problems; field-programmable gates arrays; general-purpose computing platforms; memory contention; microprocessors; online algorithm; static coprocessor loading approach; transmuting coprocessors; Acceleration; Application specific integrated circuits; Computer architecture; Coprocessors; Embedded computing; Field programmable gate arrays; Robustness; Runtime; Scheduling algorithm; Signal processing algorithms; FPGAs; acceleration; coprocessing; dynamic optimization; online algorithms; runtime configuration;