응애맘마조
SIMD 본문
주의 : 해당 게시물에서 작성될 내용은 과제를 해결하기 위해 출처의 내용을 그대로 작성한 부분이 많으며 일절 광고나 수익 창출 목적으로 쓰인 것이 아님을 밝힙니다.
SIMD는 한 번에 데이터 여러 개를 명령어 하나로 처리하는 기법을 말합니다. 현재 대부분 프로그램은 하나의 명령으로 하나의 데이터를 처리하는 것이고 2개의 데이터를 처리하려면 2번 연산을 하는 SISD 방식으로 동작합니다. 이는 CPU 성능을 100% 활용하지 못하는 방식입니다. CPU 정보를 볼 수 있는 프로그램에서 MMX, SSE, SSE2, SSE3 같은 형식을 볼 수 있습니다.
Intel SIMD Extention | MMX | SSE/SSE2 | AVX/AVX2 | AVS512F |
레지스터 크기 | 64 | 128 | 256 | 512 |
위의 표는 명령어의 레지스터 크기입니다.
128비트의 레지스터 자료형은 _m128, _m128d, _m128i가 있으며 _m128, _m128d는 실수형을 표현하기 위한 자료형이고 _m128i는 정수를 표현하기 위한 자료형입니다.
256비트의 레지스터 자료형은 위의 128비트의 2배 크기이며 _m256, _m256d, _m256i가 있으며 _m256, _m256d는 실수형을 표현하기 위한 자료형이고 _m256i는 정수를 표현하기 위한 자료형입니다.
512비트의 레지스터 자료형은 위의 256비트의 2배 크기이며 _m512, _m512d, _m512i가 있으며 _m512, _m512d는 실수형을 표현하기 위한 자료형이고 _m512i는 정수를 표현하기 위한 자료형입니다.
지금까지 보면서 기존의 SISD보다 SIMD가 더 효율적이라는 것을 확인할 수 있고 벡터나 행렬 연산이 필요한 데이터 구조에 적합합니다.
읽어주셔서 감사합니다.
'공부 > 3D과제' 카테고리의 다른 글
스키닝 애니메이션 (0) | 2023.06.22 |
---|---|
Assimp 로드 (0) | 2023.06.21 |
맵 안에서 캐릭터 움직이기2 (0) | 2023.06.15 |
맵 안에서 캐릭터 움직이기 (0) | 2023.06.13 |
맵 매핑 (0) | 2023.06.13 |
Comments