Prefetching in functional languages

Prefetching in functional languages
复制标题

DOI:
10.1145/3381898.3397209
复制
发表时间:
2020-06
期刊:
Proceedings of the 2020 ACM SIGPLAN International Symposium on Memory Management
影响因子:
--
通讯作者:
S. Ainsworth;Timothy M. Jones
S. Ainsworth;Timothy M. Jones
中科院分区:
其他
文献类型:
--
作者:
S. Ainsworth;Timothy M. Jones

文献摘要

相似文献

功能编程语言包含许多运行时和语言功能,例如垃圾收集,间接存储器访问,链接的数据结构和不变性,这些功能与处理器的内存系统相互作用。例如,通过分配的链接列表和已分配的数据访问相同的数据的链接列表和数据阵列要慢了解这些问题并以与功能语言一致的方式来减轻它们,例如,在可能节点不是。宏观基准,导致超级超级超级Intel Intel Haswell和Xeon Phi骑士着陆系统的加速度高达2倍,并且在秩ARM Cortex-A53上最多可加速3倍。
Functional programming languages contain a number of runtime and language features, such as garbage collection, indirect memory accesses, linked data structures and immutability, that interact with a processor’s memory system. These conspire to cause a variety of unintuitive memory-performance effects. For example, it is slower to traverse through linked lists and arrays of data that have been sorted than to traverse the same data accessed in the order it was allocated. We seek to understand these issues and mitigate them in a manner consistent with functional languages, taking advantage of the features themselves where possible. For example, immutability and garbage collection force linked lists to be allocated roughly sequentially in memory, even when the data pointed to within each node is not. We add language primitives for software-prefetching to the OCaml language to exploit this, and observe significant performance improvements a variety of micro- and macro-benchmarks, resulting in speedups of up to 2× on the out-of-order superscalar Intel Haswell and Xeon Phi Knights Landing systems, and up to 3× on the in-order Arm Cortex-A53.