(untitled) (JOURNAL OF UNIVERSITY OF BABYLON for Pure and Applied Sciences, 2024)
Loop unrolling is one of the key optimization strategies that compilers employ to enhance the efficiency of loop-based programs. The loop unrolling approach aims to minimize the number of iterations carried out by the loop, hence reducing the sub-instruction overhead. We divide the current state-of-the-art loop-opening strategies into two groups in this survey paper: machine learning-based strategies and conventional strategies. Several conventional techniques are used in unrolling the loop, such as profile-based, heuristic-based, and static analysis-based techniques. As a result, the amount of instructions, the loop nesting structure, and the number of loops will all be taken into consideration by these approaches when determining whether to unroll the loop. Because these techniques are frequently constrained by their presumptions, they might not always yield the optimal outcomes. In contrast, loop unrolling can anticipate the ideal loop unrolling factor by utilizing machine learning-based techniques such artificial neural networks, k-nearest neighbors, decision trees, support vector machines, and random forests. When these techniques were compared to other conventional techniques, the outcomes were superior. In this paper, we supply a comprehensive review of the existing loop unrolling techniques, which include their strengths and limitations. Also, we compare the different machine learning-based approaches and debate the potential benefits of using machine learning in loop unrolling optimization. Our goal is to provide a comprehensive overview of the field and to provide guidance for future research in this area.