This project exhibits a novel dynamic programming algorithm to solve the scratchpad partitioning problem, generally tuned toward data-intensive applications.
- Area_costs.h, energy_costs.h and performance_costs.h: These contain data gathered from the memory simulator CACTI(See CACTI github repo for more info). The data in these header files contain the needed information for the cost function that will evaluate the cost of the bankings in the algorithm.
- Trace.h: The array in this file contains the memory access trace to the main signal in the embedded program after running it. This array is used to determine the cost of a banking too, depending on how many times the element is to be accessed.
- Dyn_ours_area.cpp, dyn_ours_energy.cpp and dyn_ours_perf.cpp: Each of these files is the implementation of the algorithm with a different cost objective, to either optimize the chip area, the energy consumption or the performance, respectively. So the only difference between these three files is the cost function.
- Area_optimization_results.cpp, energy_optimization_results.cpp and performance_optimization_results.cpp in the results folder: These files contain the results of running the program with area, energy and performance optimization, respectively.
To run the algorithm, download the repo to your machine then compile run any of the .cpp programs to get the resulting files with the banking positions and the cost of each banking configuration.To find the solution banking for any given embedded signal, replace the trace array A in Trace.h with the trace of memory accesses to the given signal.