C언어에서 루프 언롤링의 개념에 대해 질문드립니다.
글쓴이: exwaiz / 작성시간: 화, 2011/05/03 - 9:58오전
C언어에서 루프 언롤링에 대해 질문드립니다.
ARM의 SystemS/W에 대해 공부하는 중인데,
언롤링 : 루프문의 몸체를 여러 번 반복하여 적음으로써 같은 비율만큼 반복수를 줄여주는 방법
하지만 너무 많은 언롤링은 코드 사이즈를 증가시키고, 캐시 성능을 감소시킨다고 알고 있습니다.
궁금한 부분은,
Try to arrange that the number of elements in arrays are multiples of four or eight. You
can then unroll loops easily by two, four, or eight times without worrying about the
leftover array elements.
"배열에서 element의 수는 4나 8의 배수가 되도록 정렬해야 함."
"그러면 배열요소를 추가해야 할 지에 대해 고민하지 않고 루프를 2,4,8배로 쉽게 언롤링시킬 수 있다."
이 부분이 이해가 안갑니다ㅠ
이 부분인데, 이게 어떤 의미인지, 왜 4나 8의 배수가 되도록 정렬해야 하는지 궁금합니다 ^ㅡ^;
Forums:
CPU 의 입출력 단위가 4바이트의 배수이기 때문에
CPU 의 입출력 단위가 4바이트의 배수이기 때문에 이 싸이클에 맞추기 위함입니다.
...
without worrying about the leftover array elements: (루프를 돌고 나서) 남아있는 원소들에 대해 걱정할 필요가 없다.
예를 들어서 배열 길이가 23인데 4배로 unrolling을 하면 다섯 번 돈 다음 나머지 3은 별도 처리해야겠죠. 이런 고민을 안해도 된다는 얘깁니다.
댓글 달기