{'fraction_non_alphanumeric': 0.012658227848101266, 'fraction_numerical': 0.0, 'mean_word_length': 5.376344086021505, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Using Empirical Science to Engineer Systems: Optimizing Cache for Power and Performance

The design process of modern embedded systems invariably places a large emphasis on power demands and system performance. Engineers seeking to optimize will inevitably look to adjust the microprocessor memory hierarchy. To provide adequate coverage for an extensive set of applications designers need to investigate as many cache parameter settings as possible. In this paper we describe the development of a methodology able to explore a vast design space. This methodology relies on the statistically based field of Design of Experiments (DOE) to efficiently navigate through these endless possibilities, and take on the chore of multiple objective optimization. We then also detail a tactic to determine an optimal set of configurations which will accommodate multiple applications on the same platform simultaneously. The intention here is not just to solve the problem of cache tuning, but to establish some of the structure necessary for the long overdue integration of the use of empirically based techniques, alongside other well-established methods, in the design and testing of systems.