2012-08-02 2 views
2

AMD Opteron 6172 프로세서에서 성능 카운터를 사용하여 특정 응용 프로그램 (C로 작성)을 분석하려고했습니다. Red Hat Enterprise Linux Workstation 릴리스 6.2 (산티아고)가 실행 중입니다.AMD Opteron에서 PAPI 성능 카운터 문제가 발생했습니다.

PAPI_L1_DCA (L1 데이터 캐시 액세스 계산)에 대해 PAPI_TOT_CYC (총주기 계산) 및 DATA_CACHE_ACCESSES에 AMD 고유 이벤트 CPU_CLK_UNHALTED를 사용하는 PAPI v4.1.3.0을 사용하고 있습니다.

내가 겪어 본 문제는 일부 경우 캐시 액세스 수가 총 사이클 수보다 많았습니다. 캐시 액세스는 CPU를 중단시키지 않습니다. 따라서 전체주기 내에 맞아야합니다. 또한 전체주기를 Opteron 6172의 클럭 주파수로 나눌 때 실행 시간을 꽤 정확하게 예측할 수 있습니다. 전체주기가 좋으며 문제는 데이터 캐시 액세스 수를 계산해야한다고 생각하게합니다.

저는 모든 사례를 파피의 예에 따라 시작했으며 오류가 발생하지는 않았습니다. 이것이 일어날 수있는 모든 도움이나 이유는 미리 감사드립니다.

http://support.amd.com/us/Processor_TechDocs/31116.pdf

  • CPU_CLK_UNHALTED

CPU가 (STPCLK 인해 또는 HLT 명령에)가 정지 상태에 있지 클록 수

. 참고 :이 이벤트는 유휴 상태 일 때 OS가 CPU를 정지 시키면 시스템 유휴 시간이 IPC (또는 CPI) 측정에서 자동으로 제거되도록합니다. OS가 정지하지 않고 유휴 루프 상태가되면 유휴 루프의 IPC에 의해 영향을받는 계산은 입니다.

  • DATA_CACHE_ACCESSES

로드 및 저장을위한 참조 데이터 캐시 액세스 수. 일반적으로 드물기는하지만 특정 마이크로 코드 스크래치 패드 액세스가 포함될 수 있습니다. 각 증분은 8 바이트 액세스 인 을 나타내지 만 명령은 일부만 액세스 할 수 있습니다. 이 이벤트는 추측 이벤트입니다.

답변

1

좋아, 여기 내 추측이다 :

  1. 캐시는 데이터 따라서 아마도 CPU를 실속, 캐시에없는 경우 RAM 메모리 액세스를 의미 할 수 있습니다 액세스합니다. 마지막 레벨 캐시 (LLC) 누락을 측정 해보십시오. 한 번의 ACL 누락은 RAM 메모리에 대한 하나의 액세스를 의미합니다.

  2. 동시에 실행되는 다른 프로그램이 있습니까? 있다면, 그들은 프로세서를 정지 시키거나 측정중인 캐시 미스를 생성 할 수 있습니다.

  3. 난 당신이 이렇게 2 캐시를 갖는 하나의로드 및 클럭 사이클 당 하나의 저장 명령을 발행 할 수 있다는 확신이

은 그것이 희망 .../클록 사이클이 아닌 그 이상한 액세스 도움이 ...

+0

안녕하세요, 답장을 보내 주셔서 감사합니다하지만 내 질문에 대답을 확신하지.1, 나는 100 % L1 캐시 히트를 가지므로 캐시의 다른 레벨로 이동하지 않는다. 2, 아마 다른 프로그램이 실행 중이더라도 l1 데이터 캐시 액세스뿐만 아니라 총 사이클을 증가시킬지라도 나는 혼자 있기를 예약 한 서버에서이 테스트를 실행하고 있기 때문에 아마도 아닙니다. 3, 예, opteron은 양방향 associative L1 캐시를 사용합니다. 즉, 한 번에 두 개의 명령을 발행 할 수 있지만 CPU는이 액세스의 응답을 기다리지 않습니다. 가장 저렴한 것은 3 사이클입니까? – Aleksr9

+0

글쎄, 파이프 라이닝으로 인해 CPU가 액세스가 완료 될 때까지 기다릴 필요는 없습니다 ... –