성능 분석

성능 카운터로 분기 예측 미스가 매우 많다는 것을 알았다. 개선 방법에 해당하는 것은?

  1. A루프 안에 분기를 더 추가한다
  2. B데이터를 정렬하여 분기 결과를 예측하기 쉽게 하거나, 조건부 선택이나 계산으로 분기 자체를 없앤다
  3. C캐시 용량을 줄인다
정답과 해설 보기

정답: B. 데이터를 정렬하여 분기 결과를 예측하기 쉽게 하거나, 조건부 선택이나 계산으로 분기 자체를 없앤다

분기 예측이 틀리면 CPU는 투기적으로 진행한 명령어를 버리고 다시 시작하므로 1회당 십수 사이클 이상을 잃습니다. 데이터가 무작위이면 「값이 128 이상이면」과 같은 분기 결과는 예측할 수 없습니다. 데이터를 먼저 정렬해 두면 결과가 한쪽으로 모여 예측이 잘 맞고, 조건부 선택 명령어나 비트 연산으로 작성하면 분기 자체가 없어집니다. 컴파일러가 이러한 변환을 하도록 유도할 수도 있습니다.

  • A. 예측 미스가 더 늘어날 우려가 있습니다.
  • B. 올바릅니다. 예측하기 쉽게 하거나 분기를 없앱니다.
  • C. 분기 예측과는 관계없이 성능이 떨어집니다.
이 분야 연습하기 분야로 돌아가기

성능 분석의 다른 문제

  1. 성능 카운터를 사용한 톱다운 분석(Top-down Microarchitecture Analysis)에서 CPU의 명령어 처리 슬롯 사용 방식을 나누는 큰 분류로 올바른 것은?
  2. 프로그램이 느린데 CPU 사용률이 20% 정도로 낮았다. 가장 가능성이 높은 원인은?
  3. 어떤 프로그램이 계산 율속인지 메모리 율속인지 확인하는 방법으로 CPU 주파수를 바꿔 가며 실행 시간을 측정했다. 메모리 율속이라면 일반적으로 어떤 결과가 나오는가?
  4. 루프라인(Roofline) 모델에서 어떤 처리가 메모리 대역폭으로 제한되는 영역에 있음을 알았을 때, 성능을 높이는 방향으로 올바른 것은?
  5. STREAM 벤치마크로 주로 측정하는 것은?