|
수퍼 파이(Super PI)라는 프로그램은 아마 오버클럭 하는 분에게는 매우 익숙한 프로그램일 것이다. 오버클럭을 하고 나서 매우 간단하게 성능 및 안정성을 체크하는데 사용된다. 이름에서 말하듯이 원주율 파이 값을 계산 해주는 프로그램. 지금 내 컴퓨터에서 방금 돌려본 값은 아래 그림과 같다. 관심이 있는 분은 다운 받아 바로 돌려봐도 된다(super_pi_mod.zip). 리눅스 용도 여기서 다운 받으면 된다. ![]() 컴퓨터는 샌디 브릿지 2600K를 4.5GHz로 오버클럭 한 상태이다. 수퍼 파이의 1M 값, 즉 원주율을 소숫점 2^20(=약 1백만) 자리까지 구하는 계산인데, 보다시피 8.47초 정도 걸린다. 저 수치는 다른 프로그램이 떠 있는 상태에서 측정한 것이고 다른 영향을 최소화하면 8.2초까지 떨어진다. 최근 AMD가 내놓은 불도저(FX-8150)의 수퍼 파이 값이 무려 20초에 육박한다는 사실을 보면 이 10초 미만의 수치는 엄청 빠른 편이다. 만약 오버클럭을 하지 않은 2600K라면 10초 근처가 나온다. 내가 아마 처음으로 돌려본 수퍼 파이가 2003년 여름에 샀던 펜티엄 4 2.4c라는 CPU인데, 여기서 봤던 수치가 약 50초로 기억한다. 여기서 오버클럭을 해서 3GHz까지 올려야 40초대 중반을 보았던 것으로 기억한다. 1세대 Core i7, 즉 Nehalem 구조에서 10초 이하를 보려면 굉장히 힘든 오버클럭을 해야 했는데, 이제는 (물론 아주 쉽지는 않지만) 비교적 간단하게, 게다가 전력도 많이 먹지 않으면서도, 8초대라는 엄청난 수치가 가능해졌다. 간단하게 지금 검색해보니 2600K로 5GHz까지 오버클럭을 하면 7.4초 정도가 된다고 한다. 4.5GHz에서 8.2초니까 5GHz에는 단순히 비례로 하더라도 7.4초가 나온다. 즉, 수퍼 파이는 클럭을 높이면 성능이 비례하는 셈. 그렇다면 세계 최고 기록은 얼마나 될까? Core i7 Extreme 980X를 무려 6930MHz로 오버클럭한 컴퓨터에서 얻은 5.781초(링크)라고 한다. 아마 당연히 쿨링은 액체 질소를 이용했을 것이다.
수퍼 파이 프로그램이 도대체 어떤 부분을 테스트할 수 있는지 간단히 프로파일링으로 알아보자. 먼저, 수퍼 파이 프로그램은 싱글 스레드 프로그램이다. 그러니 수퍼 파이 하나만 가지고는 싱글 스레드 성능만을 제대로 측정할 수 있다. 참고로 AMD의 불도저가 수퍼 파이 점수가 상당히 낮은데, 예전 글에서도 썼지만 불도저는 싱글 스레드 성능은 솔직히 큰 기대를 하지 않고 반대로 멀티 스레드 성능에 집중하였기 때문에 어느 정도 이해는 할 수 있다. (그래도 20초는 너무…) 수퍼 파이 프로그램을 Pin이라는 인스트루멘테이션(instrumentation) 툴을 이용해서 1M 파이 계산 시 어떤 종류의 x86 명령어가 실행되는지 그 통계 값을 얻어 보았다. ![]() 총 실행된 명령어 개수는 8.47초 동안에 430억 개. 즉, 초당 약 50억 개. 이 CPU가 4.5GHz이니까 대략 계산되는 IPC(Instruction Per Cycle)은 1.12 정도가 나온다. (샌디 브릿지는 파이프라인이 4개 있으니 많으면 매우 이상적이라면 3-4까지도 나올 수 있다.) 정확한 IPC 또는 CPI 값은 VTune 같은 프로파일러나 하드웨어 퍼포먼스 카운터로 측정이 가능하나 지금 이 컴퓨터에 깔려있지가 않아서 생략했음. 가장 많은 비율을 차지한 연산은 x86 MOV 연산이다. 참고로 MOV는 메모리에서 레지스터로 값을 읽는 로드(load)와 반대로 연산 결과 값을 메모리에 쓰는 스토어(store) 작업이 모두 포함되어 있으므로 이것만 가지고 메모리 읽기/쓰기 비율을 바로 알 수 있지는 않다. MOV 뒤로 각종 부동 소숫점 연산이 뒤따른다. 자명하지만 이 수퍼 파이 연산은 부동 소숫점 연산이 많을 것이므로 예측 가능한 결과이다. 정수 덧셈(ADD)은 2.72%로 그 비율이 낮은 편. 대부분은 아마 메모리 주소 값을 계산하는데 쓰였을 것이다. 여기서 확실히 알 수 있는 수퍼 파이의 특징은 이 프로그램은 부동 소숫점 연산이 매우 많은 프로그램이라는 것. x86의 ADD, FADD에는 피연산자로 레지스터 외에 메모리도 올 수 있으므로 MOV 비율만으로는 부족하므로 다시 한번 메모리 읽기/쓰기 비율을 조사할 필요가 있다. 그 결과는 아래와 같다. ![]() 8바이트를 읽고 쓰는 비율이 적지 않으므로 역시 float 보다는 double을 썼음을 알 수 있고, 메모리 읽기/쓰기의 총 합이 80%에 달하는 것으로 보아 이 프로그램은 캐시/메모리 성능에도 영향을 많이 받을 것으로 예측할 수 있다. 그러나 이건 싱글 스레드 프로그램이고 데이터의 이동량 자체가 많은 것은 아니므로 요즘 컴퓨터에서 메모리 대역폭에 의해 성능이 저하되는 일은 없을 것이다. 1M 계산 시에는 메모리를 10MB 정도만 쓰며, 최대 계산인 32M까지 구하는 계산을 하더라도 273MB로 요즘 컴퓨터에서는 별 부담 없는 메모리 사용률을 보이기 때문이다. L3 캐시 미스 비율(=DRAM 접근 횟수)까지는 측정 해보지는 않았지만, 대략 이러한 정보를 종합하면 결국 클럭과 싱글 스레드 처리 능력이 수퍼 파이의 결과를 좌우 한다고 볼 수 있다.
수퍼 파이 값은 항상 어느 컴퓨터가 ‘빠른가’에 관심이 있는데, 그렇다면 가장 느린 수퍼 파이 값은 얼마나 될까? 이 단순한 호기심을 풀려고 인터넷 검색을 해보았다. 일단 수퍼 파이는 윈도우/리눅스에서 돌아가는 프로그램이니까 현실적으로 이 운영체제를 돌릴 수 있는 컴퓨터 중 가장 오래된 녀석을 찾아야 할 것이다. 안타깝게도 찾을 결과는 한 글 타래 밖에 없었다. 여기서 두 개의 결과가 눈에 띄는데.. (1) Intel 486 SX 33MHz, 45MB RAM, 203MB HDD, 코프로세서 없음(!!!, 즉 부동소숫점 처리가 모두 에뮬레이션으로 처리됨!) 여기서 데비안 (커널 2.2.20)을 올리고 수퍼 파이 1MB가 아니라 16K를 돌리니 6691.190초가 걸렸다고 한다. 거의 두 시간이 걸리는 결과인데, 내 컴퓨터에서 16K 연산 값은 0.095초. 이 두 값의 차이는 무려 70,433배. 80486 CPU가 1989년에 나왔으니 22년의 세월 동안 싱글 스레드 성능이 이렇게 엄청난 발전이 있었음을 알 수 있다. (2) 역시 486SX 33MHz (역시 코프로세서 없음), 20MB 램에서는 1M 값이 46시간 56분 6초 = 168,966초가 걸렸다고 한다. 내 컴퓨터의 값 8.47초와 비교하면 19,948배에 해당하는 값! 내가 궁금한 것: 안드로이드나 아이폰에서 수퍼 파이 결과 값은 얼마나 될까요? 저도 모릅니다;;
최근 등록된 덧글
워드의 docx, 파워포인트..
by 나인테일 at 05/19 쓸 때마다, '차라리 이런 게.. by Raymundo at 05/18 LaTeX 쓰면서 ”.toc나 *.. by 아라크넹 at 05/18 지금 회사 전산팀에 있을대 .. by 김아람 at 05/18 TeXworks, TeXstudio .. by 김민장 at 05/18 LyX가 위지위그 스타일이라.. by 김민장 at 05/18 LyX는 어떤가요? 요즘 공.. by 길가던 공대생 at 05/18 얼마전에 KTUG에서 ko.t.. by 死海文書 at 05/17 최근 등록된 트랙백
메뉴릿
이글루 파인더
|