1. A method for dynamically programming a field programmable gate array (FPGA) in a coprocessor, the method comprising: providing a plurality of processors; sharing a program memory among the plurality of processors; executing an application in a first processor of the plurality of processors; providing a plurality of coprocessors, each coprocessor being coupled to a corresponding processor from the plurality of processors and including a FPGA; sending an instruction from the program memory to each of the plurality of coprocessors to perform a function for the application; and if none of the FPGAs associated with the plurality of coprocessors are programmed to perform the function for the application, dynamically programming any one of the FPGAs to perform the function for the application, including selecting the FPGA in accordance with a least recently used algorithm, the least recently used algorithm specifying a function that can be disabled to free up logic resources within the FPGA selected to be dynamically programmed.