{'fraction_non_alphanumeric': 0.02204585537918871, 'fraction_numerical': 0.003527336860670194, 'mean_word_length': 4.850515463917525, '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}}
An Application-Specific Memory Management Unit for FPGA-SoCs

HW/SW-Codesign approaches using so-called FPGA-SoCs such as the Zynq-7000 can provide superior performance while consuming less energy than other solutions. The communication between software and hardware components in HW/SW-Codesign is one of the most influential aspects of such approaches, as it can reduce the performance significantly. Most contemporary FPGA-SoCs do not support memory virtualization in the FPGA part, in contrast to the CPU part, thus impeding the communication between IP cores in the FPGA and the CPU. In this work, we present an application-specific memory management unit for FPGA-SoCs that enables memory virtualization in the FPGA part and can therefore present a solution to this issue. We describe the structure of the unit as well as how it can be integrated into an FPGA-SoC running Linux. An evaluation shows that, by adapting the memory management unit to the memory access patterns of the actually used IP cores in a project, a configuration can be found that incurs only a minimum overhead while still providing a reasonable bandwidth.