캐시 성능 측정 및 메트릭

Cache performance measurement and metric

CPU 캐시는 메인 메모리에서 자주 사용되는 데이터의 일부를 더 작고 빠른 메모리의 '캐시'에 저장함으로써 메모리 내의 데이터에 대한 액세스 시간을 단축하는 하드웨어입니다.

컴퓨터 시스템의 성능은 정수, 분기 및 부동 소수점, I/O 장치, 버스, 캐시 및 메모리 시스템과 같은 실행 장치를 포함하는 모든 개별 장치의 성능에 따라 달라집니다.프로세서 속도와 메인 메모리 속도의 차이는 기하급수적으로 증가하고 있습니다.2001-05년까지 클럭 주파수로 측정한 CPU 속도는 연간 55% 증가했지만 메모리 속도는 7%[1] 증가하는데 그쳤습니다.이 문제를 메모리 벽이라고 합니다.캐시와 그 계층의 동기는 이 속도 격차를 해소하고 메모리 벽을 극복하는 것입니다.

대부분의 고성능 시스템에서 중요한 구성 요소는 캐시입니다.캐시는 속도 격차를 해소하기 위해 존재하기 때문에 캐시의 크기, 연관성, 교체 정책 등의 다양한 파라미터를 설계 및 선택할 때 성능 측정과 측정 기준이 중요합니다.캐시 성능은 캐시 적중 및 캐시 누락에 따라 달라지는데, 이는 시스템 성능에 제약을 가하는 요인입니다.캐시 적중 횟수는 캐시에서 해당 데이터를 실제로 찾은 캐시에 대한 액세스 횟수이며 캐시 누락은 캐시에서 블록을 찾지 못한 액세스 수입니다.이러한 캐시 적중과 누락은 AMAT(Average Memory Access Time)라고도 불리는 Average Access Time(AAT; 평균 메모리액세스 시간)의 원인이 됩니다.이 시간은 이름에서 알 수 있듯이 메모리에 액세스하는 데 걸리는 평균 시간입니다.이는 캐시 퍼포먼스 측정의 주요 지표 중 하나입니다.프로세서 속도가 증가함에 따라 이 수치가 매우 중요해지고 중요하기 때문입니다.

성능을 테스트하는 데 유용한 또 다른 메트릭은 캐시 누락의 멱함수 법칙입니다.캐시 크기 중 하나의 누락 횟수가 이미 알려져 있으므로 캐시 크기를 변경할 때 누락 횟수가 표시됩니다.마찬가지로 캐시의 퍼포먼스를 다른 어소시에이티 전체에 걸친 누락에 관해 테스트하는 경우 스택디스턴스 프로파일링이 사용됩니다.

캐시 누락 유형 소개

캐시 계층에 의한 프로세서의 성능 향상은 캐시로부터의 블록 요구(캐시 히트)를 충족하는 캐시 액세스 수와 그렇지 않은 액세스 수에 따라 달라집니다.캐시에서 데이터 읽기 또는 쓰기가 실패하면(캐시 누락) 메모리 액세스 수준이 낮아지거나 기본 메모리 액세스로 인해 지연 시간이 늘어납니다.캐시 미스에는 3C로 알려진 기본적인 세 가지 타입과 그다지 인기가 없는 다른 캐시 미스 타입이 있습니다.

필수 미스

각 메모리 블록은 처음 참조될 때 강제적인 누락이 발생합니다.이는 필수 미스의 수가 지금까지 참조된 개별 메모리 블록의 수임을 의미합니다.그들은 때때로 콜드 미스라고도 불린다.블록이 프리페치되지 않는 한 콜드 미스를 피할 수 없습니다.

공간적 위치를 이용하기 위해 블록 크기가 어느 정도 증가하면 콜드 미스 감소로 이어지는 것으로 관찰되었다.블록 크기를 늘리면 블록 내에서 인근 단어가 프리페치되어 향후 콜드 미스를 방지할 수 있습니다.블록 크기를 너무 많이 늘리면 불필요한 데이터가 프리페치되어 콜드 미스 횟수가 증가할 수 있습니다.

컨플릭트 미스

충돌 누락은 필요한 데이터가 이전에 캐시에 있었지만 제거되었을 때 발생합니다.이러한 삭제는 다른 요청이 동일한 캐시 라인에 매핑되었기 때문에 발생합니다.일반적으로 컨플릭트 미스는 어소시에이티브성이 제한된 캐시 내의 미스 수를 같은 크기 및 캐시 블록크기의 완전 어소시에이티브캐시의 미스 수로 감산함으로써 측정됩니다.

컨플릭트 미스에는 충분한 어소시에이티비티가 없기 때문에 어소시에이티비티를 어느 정도 높이면(8방향 어소시에이티비티와 거의 같은 효과) 컨플릭트 미스의 양이 감소합니다.다만, 이러한 어소시에이션에 의해서, 캐시 액세스 시간이 길어져, 설정된 어소시에이션 캐시보다 훨씬 많은 전력이 소비됩니다..

용량 미달

캐시의 매핑 기능이 아닌 캐시의 크기가 제한되어 용량 누락이 발생합니다.현재 프로그램에 중요한 데이터인 작업 세트가 캐시보다 클 경우 용량 누락이 자주 발생합니다.3C 용량 누락은 식별이 가장 어려우며 완전히 연관된 캐시에서 강제적이지 않은 누락으로 간주할 수 있습니다.단일 프로세서 시스템에서는 필수 미스 및 컨플릭트 미스의 수를 뺀 후에 발생하는 미스를 용량 미스로 분류할 수 있습니다.

용량 부족은 캐시의 제한된 크기에 기인할 수 있기 때문에 이러한 손실 수를 줄이는 간단한 방법은 캐시 크기를 늘리는 것입니다.이 방법은 매우 직관적이지만 액세스 시간이 길어지고 캐시 영역과 소비 전력이 증가합니다.또, 어느 정도의 캐시 사이즈가 지나면, 누락의 수가 포화 상태가 되어, 캐시 사이즈를 늘려도 감소하지 않습니다.

캐시 [2]누락에 대한 기본 캐시 매개 변수 조작의 효과.
파라미터 필수 미스 컨플릭트 미스 용량 미달
캐시 크기 확대 효과 없음 효과 없음 감소하다
더 큰 블록 크기 감소하다 불확실한 효과 불확실한 효과
높은 연관성 효과 없음 감소하다 효과 없음

상기의 3종류의 누락은, 유니 프로세서의 누락만을 대상으로 하고 있습니다.

일관성이 결여

캐시 미스의 3C 그룹은 캐시를 포함한 멀티프로세서 시스템이 관여하고 있는 경우 4C로 확장할 수 있으며, 4C는 일관성이 결여되어 있습니다.일관성 미스 카운트는 스레드의 캐시에 존재할 캐시 라인이 다른 [3]스레드의 쓰기로 인해 비활성화되었기 때문에 놓치는 메모리 액세스 수입니다.멀티프로세서 시스템의 일관성은 메모리 블록의 복사본이 하나만 존재하거나 모든 복사본이 동일한 값을 갖는 경우 유지됩니다.메모리 블록의 모든 복사본의 값이 동일하지 않더라도 반드시 일관성 결여가 발생하는 것은 아닙니다.일관성 미스는 [4]스레드가 메모리 블록의 다른 값을 관찰하도록 로드를 실행할 때 발생합니다.

일관성 문제는 복잡하고 병렬 프로그램의 확장성에 영향을 미칩니다.이 문제를 해결하려면 시스템 전체에 동일한 위치에 대한 모든 메모리 액세스의 글로벌 순서가 존재해야 합니다.

커버리지 미스

멀티프로세서 시스템에 캐시로 편성된 일관성 디렉토리가 포함되어 있는 경우, 즉 엔트리를 대체할 수 있는 경우, 캐시 누락의 4C 그룹은 5C로 더욱 확장될 수 있습니다.이 다섯 번째 C는 [5]Coverage를 나타냅니다.coverage miss count는 디렉토리 삭제의 결과로 프로세서의 캐시에 존재할 캐시 라인이 비활성화되었기 때문에 놓치는 메모리액세스의 수입니다.디렉토리가 용량이 제한되어 캐시 라인을 추적할 수 없는 경우 일관성을 유지하기 위해 프로세서의 캐시에서 라인을 비활성화해야 합니다.

시스템 관련 미스

인터럽트, 컨텍스트스위치, 시스템콜 등의 시스템액티비티에 의해 프로세스가 일시정지되어 캐시 상태가 변경됩니다.프로세스 실행이 재개되면 변경된 캐시 상태를 복원하기 위해 캐시 누락이 발생합니다.이러한 미스를 시스템 관련 [2]미스로 부릅니다.

또, 콘텍스트스위칭에 의한 캐시 누락은, 다음의 2개의 카테고리로 분류할 수 있습니다.

미스를 교환하다

컨텍스트 스위치가 발생하면 캐시 상태가 변경되고 해당 블록의 일부가 교체됩니다.이러한 블록에의 액세스에 있어서의 미스를 치환 미스로 부릅니다.

오더된 미스

캐시의 일부 블록은 컨텍스트스위칭에 의해 교환되지 않을 수 있지만 그 주기는 변경됩니다.정렬된 오류는 블록이 교체되었기 때문이 아니라 반복성 변화로 인해 누락이 발생했을 때 발생한다고 합니다.단, 서스펜드된 프로세스가 실행이 재개될 때 정렬된 블록이 삭제되는 다른 누락이 없는 경우 정렬된 블록은 컨텍스트스위치 누락으로 이어지지 않습니다.

컨텍스트 전환이 정기적으로 이루어지면 시스템 관련 누락이 심각해집니다.캐시 크기를 늘리면 용량 및 경합 누락이 감소하지만 캐시가 여전히 캐시를 공유하는 프로세스의 작업 세트보다 작으면 시스템 관련 누락이 증가하는 것으로 관찰되었습니다.따라서 시스템 관련 미스의 수를 줄이는 것은 과제가 됩니다.

평균 메모리 액세스 시간

이러한 캐시 누락은 명령당 주기(CPI)의 증가와 직접적인 관련이 있습니다.그러나 캐시 누락이 CPI에 미치는 영향은 ILP(Instruction-level parallelism)에 의한 계산과 중복될 수 있는 캐시 누락의 양 및 메모리레벨[2]병렬화에 의한 다른 캐시 누락과 중복될 수 있는 양에 따라 달라집니다.이 두 가지 효과를 모두 무시하면 평균 메모리 액세스 시간이 중요한 지표가 됩니다.메모리 시스템 및 계층의 성능을 측정합니다.메모리 액세스를 실행하는 데 걸리는 평균 시간을 나타냅니다.메모리 명령의 실행 시간과 메모리 정지 사이클의 추가입니다.실행 시간은 캐시 액세스 시간이며, 메모리 스톨 사이클에는 캐시 미스를 처리하고 낮은 수준의 메모리에 액세스하는 시간이 포함됩니다.액세스 지연, 미스 레이트 및 미스 패널티가 알려진 경우 평균 메모리액세스 시간은 다음과 같이 계산할 수 있습니다.

여기서 1({ 레벨1 캐시의 액세스 지연 시간, 1({L1})은 레벨1 캐시의 미스 , L 1({L1})은 히트 및 히트 레벨과 비교하여 처리되는 추가 사이클입니다.

이 공식을 더 확장하여 메모리 계층의 모든 추가 레벨에 대해 재귀적으로 하여 A T AMAT를 얻을 수 있습니다.

캐시 누락의 멱함수 법칙

캐시 누락의 멱법칙은 캐시 크기의 영향을 받는 프로그램의 특정 응용 프로그램에서 용량 누락의 추세를 나타냅니다.이러한 경험적 관찰을 통해 빗나간 비율과 캐시 크기 사이의 관계를 보여주는 멱함수 법칙의 수학적 형태가 도출되었습니다.라고 말할 수 있다

여기서 M은 C 사이즈의 캐시의 미스 레이트, M0 베이스라인 캐시의 미스 레이트입니다.α 지수는 작업 부하에 따라 다르며 일반적으로 0.3에서 0.7 사이이며 평균은 0.5입니다.멱함수의 법칙은 많은 실제 벤치마크에서 [7]검증되었습니다.

이러한 관계를 통해 캐시 크기를 지속적으로 증가시키기 위해 캐시 누락의 극히 일부만 제거할 수 있음을 알 수 있습니다.이 법칙은 특정 범위의 캐시 크기에 대해서만 적용되며, 이 범위에서는 미스 레이트가 안정되지 않습니다.미스 레이트는 최종적으로 충분히 큰 캐시 사이즈로 정체되며, 그 이후에는 관계가 올바르게 추정되지 않습니다.

스택 거리 프로파일

스택 디스턴스 프로파일은 캐시 크기가 캐시 누락에 미치는 영향을 잘 나타냅니다.캐시 누락의 멱함수 법칙은 대략적인 근사치를 보여 줍니다.스택 디스턴스 프로파일은 완전 또는 세트 어소시에이션캐시 [8]내의 애플리케이션의 일시적인 재사용 동작을 캡처합니다.

일반적으로 시간적 재사용 동작이 더 많은 애플리케이션은 더 최근에 사용된 데이터에 액세스합니다.캐시의 관련성을 A A라고 가정합니다.이 캐시의 스택디스턴스 프로파일 정보를 수집하려면 LRU 치환 정책이 있다고 하면 A+(\ A 카운터가 })부터 C_{0까지 되며, 추가 사용됩니다.C < \ C _ { < 。이것에 의해, 미스 카운트가 기록됩니다. 히트했을 때 증분합니다. 히트할 때마다 증가합니다스택 거리 프로파일은 가장 최근에 사용된 데이터에서 가장 최근에 사용된 데이터로 감소하는 히트 추세를 보여 줍니다.이 스택 거리 프로파일 정보를 사용하여 A{\ A LRU 치환 정책을 가진 캐시의 캐시 누락은 다음과 같이 계산됩니다.서 A A 다음과 같이 계산됩니다.

이 프로파일링 정보에는 여러 연관성에 걸친 시간적 재사용만 캡처할 수 있다는 제한이 있습니다.다른 목적을 위해, 시간적 재사용을 더 자세히 연구해야 한다.

「 」를 참조해 주세요.

메모들

  1. ^ Hennessy, J. and Patterson, D. (2003). Computer Architecture : a Quantitative Approach,3rd edition. Morgan-Kaufmann Publishers, Inc. ISBN 9781558607248.{{cite book}}: CS1 maint: 여러 이름: 작성자 목록(링크)
  2. ^ a b c d Solihin, Yan (2015-11-17). Fundamentals of Parallel Multicore Architecture, 2016 edition. Chapman & Hall. ISBN 978-1482211184.
  3. ^ "Modeling Cache Coherence Misses on Multicores" (PDF). {{cite journal}}:Cite 저널 요구 사항 journal=(도움말)
  4. ^ Sweden, Michel Dubois, University of Southern California, USA, Murali Annavaram, University of Southern California, USA, Per Stenström, Chalmers University of Technology (2012). Parallel computer organization and design. Cambridge: Cambridge University Press. ISBN 9781139051224.
  5. ^ Ros, Alberto; Cuesta, Blas; Fernández-Pascual, Ricardo; Gómez, María E.; Acacio, Manuel E.; Robles, Antonio; García, José M.; Duato, José (2010). EMC2: Extending Magny-Cours Coherence for Large-Scale Servers. 17th International Conference on High Performance Computing (HiPC). pp. 1–10. doi:10.1109/HIPC.2010.5713176. ISBN 978-1-4244-8518-5.
  6. ^ Patterson, John L. Hennessy, David A. (2011). Computer architecture : a quantitative approach (5th ed.). San Francisco, Calif.: Morgan Kaufmann. ISBN 978-0-12-383872-8.
  7. ^ Hartstein, A.; Srinivasan, V.; Puzak, T. R.; Emma, P. G. (2006-01-01). Cache Miss Behavior: Is It √2?. Proceedings of the 3rd Conference on Computing Frontiers. CF '06. pp. 313–320. doi:10.1145/1128022.1128064. ISBN 978-1595933027. S2CID 17728397.
  8. ^ Mattson, R.L.; Gecsei, J.; Slutz, D. R.; Traiger, I (1970). "Evaluation Techniques for Storage Hierarchies". IBM Systems Journal. 9 (2): 78–117. doi:10.1147/sj.92.0078.