SIMD란 ?
이전에 알아 보아야 하는 것이 바로 SISD이라는 방식이다. 원래 컴퓨터는 OP라는 연산을 하는 경우 하나 이상의 피연산자와 연산 결과를 가지다. 이것이 SISD(single instruction single data)라는 것이다. 덧셈을 예를 들자면
a + b = c 라는 연산을 +라는 하나의 명령어를 통해서 얻어내는 것이다.
하지만 SIMD(Single instruction multi data)는 같은 연산 여러 개를 한번에 진행 하는것이다.
따라서 CPU명령어에 따라서 덧셈을 명령으로 2개 이상 할수 있다는 것이다. 이런 경우 같은 연산이 필요한 선형대수에서 컴퓨팅 성능을 끌어 올려낼수 있다.
대표적으로 intel의 SSE명령어 셋이 있고 다른 회사에서 만들어 내는 것도 있다.
따라서 각 회사에서 제공해주는 라이브러리를 사용하면 각각의 컴퓨터 아키텍쳐 마다 따로 코드를 짜줘야 한다.
그래서 LLVM등에서는 중간코드를 생성하고 이것을 해석하는 경우 VM에서 각 아키텍쳐에 맞는 SIMD로 변경 해준다.
댓글
댓글 쓰기