SIMD memmove 최적화
글쓴이: cppig1995 / 작성시간: 일, 2008/01/20 - 10:53오후
SIMD 명령집합(MMX/SSE/SSE2)를 이용한 memmove 최적화에 대해 고민하고 있습니다.
어셈블리어 고수분들께서 힌트라도 주시면 매우 감사하겠습니다.
1. 역순으로 복사되어야 합니다.
이것은 겹치지 않고 안전하게 옮겨지도록 하기 위한 조처입니다.
memcpy와 memmove의 차이점이죠.
2. SIMD 명령을 이용해 최적화해야 합니다.
루프 언롤링(loop unrolling) 기법을 사용해야 합니다.
예를 들어 주워들은 바에 의하면
1. 적당량을 미리 읽어들인다(prefetch).
2. 읽을 내용을 SIMD 레지스터에 복사해 놓는다.
3. SIMD 레지스터에 복사된 내용을 써넣는다.
의 과정을 반복한다고 합니다.
Forums:
CPU 별로 다른걸로 알고 있습니다.
CPU 별로 다른걸로만 알고있습니다.
AMD 쪽 예전 문서는 제가 갖고 있으니까 첨부해드리겠습니다.
결론은 SIMD 명령은 안쓰고 SIMD 레지스터만 이용합니다.
과거 486 최적화에서도 rep movsd 보다 그냥 무식하게 mov 하는게 더 빨랐었는데...
역시 RISC 형태 명령 사용(간단의 기능의 명령 여러개를 섞어 사용하는 형식)이
속도엔 최고인것 같습니다.
댓글 달기