퍼포먼스 예측
Performance prediction컴퓨터 과학에서 성능 예측이란 주어진 컴퓨터 상에서 프로그램의 실행 시간 또는 다른 성능 요인(캐시 누락 등)을 추정하는 것을 의미합니다.컴퓨터 설계자가 새로운 컴퓨터 설계를 평가하고 컴파일러 라이터가 새로운 최적화를 탐색하며 고급 개발자가 프로그램을 조정하는 데 널리 사용되고 있습니다.
컴퓨터의 프로그램 성능을 예측하는 방법은 여러 가지가 있습니다.크게 세 가지 범주로 나눌 수 있습니다.
- 시뮬레이션에 근거한 예측
- 프로파일 기반 예측
- 해석 모델링
시뮬레이션 기반 예측
퍼포먼스 데이터는 컴퓨터 시뮬레이터로부터 직접 얻을 수 있으며, 이 시뮬레이터에서는 특정 입력 데이터 세트가 주어졌을 때 타깃 프로그램의 각 명령이 실제로 동적으로 실행된다.시뮬레이터는 프로그램의 성능을 매우 정확하게 예측할 수 있지만 큰 프로그램을 처리하는 데는 상당한 시간이 걸립니다.예로는 병렬 시스템 시뮬레이션에 필요한 시간을 대폭 단축하려는 최신 WARPP 시뮬레이션 툴킷뿐만 아니라 PACE 및 위스콘신 풍동 시뮬레이터가 있다.
트레이스 베이스의 시뮬레이션에 근거하는 다른 어프로치는, 모든 명령을 실행하는 것은 아니고, 중요한 프로그램이벤트만을 저장하는 트레이스 파일을 실행합니다.이 접근방식은 위에서 설명한 사이클 정밀도 시뮬레이션에 비해 유연성과 정확성을 다소 잃었지만 훨씬 더 빠를 수 있습니다.트레이스 생성은 많은 경우 상당한 스토리지 공간을 소비하며 실행 중에 대량의 데이터가 기록될 경우 애플리케이션 실행 시 심각한 영향을 미칠 수 있습니다.
프로파일 기반 예측
성능 예측의 기존 접근 방식은 프로그램을 실행 경로에 의해 연결된 기본 블록 집합으로 처리합니다.따라서 전체 프로그램의 실행 시간은 다음 공식과 같이 각 기본 블록의 실행 시간 합계에 실행 빈도를 곱한 값이다.
기본 블록의 실행 빈도는 프로파일러에서 생성되므로 이 방법을 프로파일 기반 예측이라고 합니다.기본 블록의 실행 시간은 보통 단순한 명령 스케줄러에서 얻을 수 있습니다.
기존의 프로파일 기반 예측은 초기 단일 이슈의 순차 실행 프로세서에서 잘 작동했지만 최신 프로세서의 성능을 정확하게 예측하지는 못했습니다.주요 이유는 최신 프로세서가 여러 명령을 동시에 발행하고 실행할 수 있으며, 때로는 원래 순서에서 벗어나 기본 블록의 경계를 넘을 수 있기 때문입니다.