컴파일러

컴파일러의 자동 벡터화에서 사용되는 명령의 종류로 올바른 것은 무엇인가?

  1. A인터럽트를 발생시키는 명령
  2. B여러 데이터를 동시에 다루는 SIMD 명령
  3. C캐시의 내용을 한꺼번에 모두 지우는 명령
정답과 해설 보기

정답: B. 여러 데이터를 동시에 다루는 SIMD 명령

자동 벡터화는 배열의 요소마다 같은 계산을 하는 루프를 찾아 여러 요소를 한꺼번에 처리하는 SIMD 명령으로 대체하는 최적화입니다. 예를 들어 128비트 SIMD 레지스터라면 32비트 수를 4개 동시에 더할 수 있으므로, 잘 되면 루프의 연산 횟수가 4분의 1이 됩니다. 반복 사이에 의존이 없을 것, 데이터의 배열이 연속일 것 등이 조건이 되며, 포인터가 겹칠 가능성이 있으면 보류되기도 합니다. 인터럽트나 캐시 조작 명령과는 관계가 없습니다.

  • A. 인터럽트를 일으키는 명령은 사용하지 않습니다.
  • B. 올바릅니다. SIMD 명령으로 여러 요소를 한꺼번에 처리합니다.
  • C. 캐시를 지우는 명령과는 관계가 없습니다.
이 분야 연습하기 분야로 돌아가기

컴파일러의 다른 문제

  1. 컴파일러 최적화가 지켜야 하는 기본 조건으로 올바른 것은 무엇인가?
  2. 코드 생성 단계의 하나인 명령 선택(인스트럭션 셀렉션)에 대한 설명으로 올바른 것은 무엇인가?
  3. 크로스 컴파일러에 대한 설명으로 올바른 것은 무엇인가?
  4. 최적화를 적용해 컴파일한 프로그램을 디버거로 조사하면 일부 변수의 값이 "표시할 수 없음"으로 나오는 경우가 있다. 주된 이유는 무엇인가?
  5. 위의 함수에 상수 전파·상수 폴딩·불필요한 코드 제거를 충분히 적용했을 때, 함수가 반환하는 값과 남는 코드로 올바른 것은 무엇인가?

이 분야의 비교