캐시 계층

Cache hierarchy

캐시 계층 또는 멀티 레벨 캐시는 다양한 액세스 속도에 따라 메모리 저장소의 계층을 사용하여 데이터를 캐시하는 메모리 아키텍처를 말합니다.요구가 높은 데이터는 고속 액세스 메모리 저장소에 캐시되므로 중앙 처리 장치(CPU) 코어에 의한 신속한 액세스가 가능합니다.

캐시 계층은 메모리 계층의 한 형태이자 일부이며 계층형 스토리지의 [1]한 형태로 간주할 수 있습니다.이 설계는 메인 메모리 액세스의 메모리 레이텐시에도 CPU 코어의 처리속도를 높이는 것을 목적으로 하고 있습니다.메인 메모리에 액세스 하는 것은 CPU가 데이터를 대기하기 때문에 CPU 코어 퍼포먼스의 병목현상이 되는 경우가 있습니다.또, 메인 메모리의 모든 것을 고속으로 하는 것은, 고액의 비용이 드는 경우가 있습니다.고속 캐시는 CPU가 가장 많이 사용하는 데이터에 대한 고속 액세스를 가능하게 하여 CPU [2]클럭을 고속화할 수 있도록 하는 타협입니다.

Process architecture diagram showing four independent processors each linked through cache systems to main memory and input-output system.
범용 멀티 레벨 캐시 구성

배경

컴퓨터와 전자칩 개발의 역사에서 CPU 속도가 메모리 액세스 [3]속도 향상을 앞지른 시기가 있었다.CPU와 메모리의 속도 차이는 CPU가 [4]자주 아이돌 상태임을 의미합니다.CPU는 주어진 시간에 더 많은 양의 명령을 실행하고 실행할 수 있게 되었지만, 메인 메모리에서 데이터에 액세스하는 데 시간이 걸리기 때문에 프로그램이 이 [5]기능을 최대한 활용할 수 없었습니다.이 문제는 보다 빠른 [6]프로세서의 가능성을 실현하기 위해 접근률이 높은 메모리 모델을 만드는 동기가 되었습니다.

이것은 1965년 캠브리지 대학의 영국 컴퓨터 과학자인 모리스 윌크스에 의해 처음 제안된 캐시 메모리의 개념을 낳았다.그는 그러한 메모리 모델을 "슬레이브 메모리"[7]라고 불렀다.대략 1970년에서 1990년 사이에 Anant Agarwal, Alan Jay Smith, Mark D의 논문과 기사. Hill, Thomas R. Puzak, 그리고 다른 사람들은 더 나은 캐시 메모리 설계에 대해 논의했습니다.첫 번째 캐시 메모리 모델은 그 당시에 구현되었지만, 연구자들이 더 나은 설계를 조사하고 제안하고 있음에도 불구하고, 더 빠른 메모리 모델의 필요성이 계속되었습니다.이러한 필요성은 초기 캐시 모델이 데이터 액세스 지연 시간을 개선했지만, 비용과 기술적 제한과 관련하여 컴퓨터 시스템의 캐시가 메인 메모리의 크기에 근접하는 것이 불가능했기 때문입니다.1990년부터는 1차 캐시의 백업으로서 다른 캐시 레벨(2차 레벨)을 추가하는 등의 아이디어가 제안되었습니다.Jean-Loup Baer, Wang Wen-Hann, Andrew W. Wilson 등이 이 모델에 대한 연구를 수행했습니다.여러 시뮬레이션과 구현이 2-레벨 캐시 모델의 이점을 입증했을 때, 멀티 레벨 캐시의 개념은 캐시 메모리의 새롭고 일반적으로 더 나은 모델로 인식되었습니다.2000년 이후 멀티레벨 캐시 모델은 널리 주목을 받아 현재 인텔의 Core i7 [8]제품에 탑재된 3레벨 캐시 등 많은 시스템에 구현되어 있습니다.

멀티레벨 캐시

각 명령 실행에 대한 메인 메모리에 액세스하면 데이터를 찾고 가져오는 데 필요한 시간에 따라 클럭 속도가 느려질 수 있습니다.이 메모리 레이텐시를 프로세서에서 숨기기 위해 데이터 캐싱을 사용합니다.[9]프로세서가 데이터를 필요로 할 때마다 메인 메모리에서 가져와 캐시라고 불리는 작은 메모리 구조에 저장됩니다.이 데이터가 더 이상 필요한 경우 캐시를 먼저 검색한 후 메인 [10]메모리로 이동합니다.이 구조는 메인 [11]메모리에 대해 데이터를 검색하고 가져오는 데 걸리는 시간 측면에서 프로세서에 더 가깝습니다.캐시를 사용하는 이점은 [12]캐시가 있는 경우와 없는 경우의 메모리 계층의 평균 액세스 시간(AAT)을 계산함으로써 입증할 수 있습니다.

평균 액세스 시간(AAT)

캐시는 크기가 작기 때문에 캐시 검색이 원하는 정보를 제공하지 않을 때 빈번한 누락이 발생할 수 있으며, 결과적으로 데이터를 가져오기 위해 메인 메모리에 호출됩니다.따라서 AAT는 데이터를 [13]검색하는 각 구조의 누락률에 영향을 받습니다.

메인 메모리의 AAT는 히트 시간으로 지정됩니다.캐시의 AAT는 다음과 같이 지정할 수 있습니다.

히트cache 타임 + (실수율cache × [further explanation needed]패널티 미스time taken to go to main memory after missing cache)

캐시의 적중 시간은 메인 메모리의 적중 시간보다 작기 때문에 메인 [14]메모리가 아닌 캐시를 통해 데이터에 액세스 할 때 데이터 검색용 AAT가 크게 낮아집니다.

트레이드오프

캐시를 사용하면 메모리 지연 시간이 개선될 수 있지만 캐시의 구성 및 통과 방식에 따라 데이터를 가져오는 데 걸리는 시간이 항상 개선되는 것은 아닙니다.예를 들어 크기가 같은 직접 매핑캐시는 보통 완전 연관 캐시보다 미스율이 높아집니다.또, 프로세서를 테스트하는 컴퓨터의 벤치마크나 순서 패턴에 의해서도 다릅니다.그러나 완전히 연관된 캐시를 사용하면 매번 전체 캐시를 검색해야 하므로 전력 소비량이 증가할 수 있습니다.따라서 캐시 [13]설계에서는 전력 소비량(및 관련 열)과 캐시 크기 간의 균형이 매우 중요합니다.

진화

A series of rectangles of increasing proportions representing increasing memory from on-CPU registers and L1 cache through L2, L3, and main memory.
온칩 L1을 통해 최대 L3 수준의 캐시와 메인 메모리를 위한 캐시 계층화

캐시 미스의 경우, 이러한 구조를 사용하는 목적은 무용지물이 되고 컴퓨터는 필요한 데이터를 가져오기 위해 메인 메모리로 이동해야 합니다.다만, 멀티 레벨 캐시의 경우, 프로세서에 가장 가까운 캐시(레벨 1 캐시 또는 L1)를 찾을 수 없는 경우는, 다음의 캐시 레벨을 검색해, 이러한 방법이 실패했을 경우에만 메인 메모리로 이동합니다.일반적으로 L1 캐시를 작게 유지하고 프로세서로부터1 ~ 2의 CPU 클럭사이클 거리를 유지하는 것이 일반적인 추세입니다.이러한 캐시 레벨은 L1보다 많은 데이터를 저장하기 위해 크기가 커집니다.따라서 거리가 멀지만 미스 레이트는 낮아집니다.그 결과 AAT가 [15]개선됩니다.캐시 레벨의 수는 설계자가 비용, AAT 및 [16][17]크기 간의 균형을 확인한 후 요건에 따라 설계할 수 있습니다.

퍼포먼스 향상

1개의 칩에 메모리 시스템을 수용할 수 있는 테크놀로지 확장 기능을 통해 대부분의 최신 프로세서는 최대 3~4개의 캐시 [18]레벨을 갖추고 있습니다.AAT의 감소는 컴퓨터가 L3 캐시까지의 다양한 구성을 AAT에서 확인하는 이 예에서 알 수 있습니다.

: 메인 메모리 = 50, L1 = 1ns(실패율 10%), L2 = 5ns(실패율 1%), L3 = 10ns(실패율 0.2%).

  • 캐시 없음, AAT = 50 ns
  • L1 캐시, AAT = 1 ns + (0.1 × 50 ns) = 6 ns
  • L1 – 2 캐시, AAT = 1 ns + (0.1 × [5 ns + (0.01 × 50 ns)]) = 1.55 ns
  • L1 – 3 캐시, AAT = 1 ns + (0.1 × [5 ns + (0.01 × [10 ns + (0.002 × 50 ns)]) = 1.5101 ns

단점들

  • 캐시 메모리는 메인 메모리보다 한계 비용이 높기 때문에 시스템 [19]전체의 비용이 증가할 수 있습니다.
  • 캐시된 데이터는 캐시에 전원이 공급될 때만 저장됩니다.
  • 메모리 [20]시스템에 필요한 온칩 영역 증가.
  • 메인 메모리[21]자주 액세스하는 시간적 인접성이 낮은 대규모 프로그램의 경우 이점을 최소화하거나 제거할 수 있습니다.

특성.

three squares showing separated on-CPU L1 caches for instructions and data, an off-chip L2 cache, and main memory.
L1을 개별로, L2를 통합으로 캐시 구성

은행화 대 통합

뱅크 캐시에서는 캐시는 명령 스토리지 전용 캐시와 데이터 전용 캐시로 분할됩니다.반면 유니파이드 캐시는 명령과 데이터를 모두 동일한 [22]캐시에 포함합니다.프로세스 중에 L1 캐시(또는 프로세서와의 접속에 관한 최상위 캐시)는 프로세서에 의해 액세스되어 명령과 데이터를 모두 취득한다.두 작업을 동시에 구현하려면 여러 포트가 필요하며 통합 캐시에서 더 많은 액세스 시간이 필요합니다.포트가 여러 개 있으면 하드웨어와 배선을 추가해야 하기 때문에 캐시와 처리 [23]장치 사이에 중요한 구조가 생깁니다.이를 피하기 위해 L1 캐시는 뱅크 캐시로 편성되어 포트 수, 하드웨어 수 및 일반적으로 액세스 시간이 [13]단축됩니다.

최신 프로세서에는 분할 캐시가 있으며, 멀티레벨 캐시가 있는 시스템에서는 상위 레벨의 캐시는 통합되고 하위 레벨의 [24]캐시는 분할될 수 있습니다.

포함 정책

a memory system diagram showing a copy of the L1 within L2 and a copy of the L2 within L3.
포괄적인 캐시 구성

상위 캐시 계층에 존재하는 블록이 하위 캐시 레벨에도 존재할 수 있는지 여부는 메모리 시스템의 포함 정책에 의해 관리되며, 포함, 배타적 또는 비배타적 비배타적([25]NINE)일 수 있습니다.

포괄적인 정책에서는 상위 수준 캐시에 있는 모든 블록이 하위 수준 캐시에도 존재해야 합니다.각 상위 수준 캐시 구성 요소는 하위 수준 캐시 구성 요소의 하위 집합입니다.이 경우 블록의 중복이 있기 때문에 메모리 낭비가 발생합니다.하지만 확인이 더 [25]빠릅니다.

배타적 정책에서는 모든 캐시 계층 컴포넌트가 완전히 배타적이므로 상위 캐시 내의 요소는 하위 캐시 컴포넌트에 존재하지 않습니다.이것에 의해, 캐시 메모리를 완전하게 사용할 수 있습니다.단, 메모리 액세스 [26]지연 시간이 길어집니다.

위의 정책을 구현하려면 일련의 규칙을 따라야 합니다.이들 중 어느 것도 강제되지 않은 경우 결과적으로 생성되는 포함 정책을 NINE(Non-Inclusive Non-exclusive)라고 합니다.즉, 상위 수준의 캐시가 하위 수준의 [21]캐시에 있을 수도 있고 없을 수도 있습니다.

쓰기 정책

메인 메모리에서 변경된 캐시 블록의 갱신 방법을 정의하는 정책은 write through 와 write [25]back 두 가지가 있습니다.

라이트 스루 정책의 경우 캐시 블록의 값이 변경될 때마다 하위 수준의 메모리 계층에서도 추가로 수정됩니다.[27]이 정책을 사용하면 데이터가 계층 전체에 기록될 때 안전하게 저장됩니다.

단, 라이트백정책의 경우 변경된 캐시 블록은 캐시 블록이 제거된 경우에만 하위 계층에서 업데이트됩니다.캐시 블록마다 "더티 비트"가 부가되어 [28]캐시 블록이 변경될 때마다 설정됩니다.제거 중에 더티 비트가 설정된 블록은 하위 계층에 기록됩니다.이 정책에서는 가장 최근에 변경된 데이터 복사본이 캐시에만 저장되므로 데이터 손실의 위험이 있습니다. 따라서 일부 수정 기술을 준수해야 합니다.

캐시 블록에 바이트가 존재하지 않는 쓰기의 경우, 쓰기 할당 또는 쓰기 무할당 [25]정책에 의해 결정된 대로 바이트를 캐시에 가져올 수 있다.쓰기 할당 정책에는 쓰기 실패 시 블록을 메인 메모리에서 가져와 [29]쓰기 전에 캐시에 배치하는 것이 명시되어 있습니다.할당되지 않은 쓰기 정책에서는 블록이 캐시에서 누락되면 블록을 [30]캐시로 가져오지 않고 하위 수준의 메모리 계층에 씁니다.

정책의 일반적인 조합은 "write block", "write allocate" 및 "write through write no-allocate"입니다.

공유와 비공개

Three CPUs each have private on-chip L1 caches but share the off-chip L2, L3, and main memory.
L1 프라이빗 및 L2 및 L3 공유 캐시 구성

프라이빗 캐시는 프로세서의 특정 코어에 할당되어 있어 다른 코어로 액세스 할 수 없습니다.일부 아키텍처에서는 각 코어가 자체 프라이빗 캐시를 가지고 있으며, 이로 인해 시스템의 캐시 아키텍처에 중복 블록이 발생할 위험이 발생하여 용량 활용률이 감소합니다.그러나 멀티레이어 캐시 아키텍처에서 이러한 유형의 설계를 선택하면 데이터 액세스 [25][31][32]지연 시간을 단축하는 데에도 도움이 됩니다.

공유 캐시는 여러 [33]코어로 액세스할 수 있는 캐시입니다.공유되기 때문에 캐시 내의 각 블록은 고유하기 때문에 중복되는 블록이 없기 때문에 히트율이 높아집니다.그러나 여러 코어가 동일한 [34]캐시에 액세스하려고 하면 데이터 액세스 지연 시간이 늘어날 수 있습니다.

멀티코어 프로세서에서는 캐시를 공유 또는 비공개로 하는 설계 선택이 [35]프로세서의 성능에 영향을 미칩니다.실제로 상위 수준 캐시 L1(또는 L2)[36][37]은 개인 캐시로 구현되고 하위 수준 캐시는 공유 캐시로 구현됩니다.이 설계에 의해 높은 수준의 캐시에는 높은 액세스환율이 제공되며 낮은 수준의 [35]캐시에는 낮은 미스환율이 제공됩니다.

최신 구현 모델

인텔 Nehalem 마이크로아키텍처[38] 캐시 구성

인텔 Broadwell 마이크로아키텍처 (2014)

  • L1 캐시(명령 및 데이터)– 코어당 64
  • L2 캐시 – 코어당 256 kB
  • L3 캐시– 2 ~6 MB 공유
  • L4 캐시– 128 MB의 eDRAM (Iris Pro [36]모델만)

인텔 Kaby Lake 마이크로아키텍처 (2016)

  • L1 캐시(명령 및 데이터)– 코어당 64 kB
  • L2 캐시 – 코어당 256 kB
  • L3 캐시– 2 ~8 MB[37] 공유

AMD Zen 마이크로아키텍처 (2017)

  • L1 캐시 – 코어당 32kB 데이터 및 64kB 명령, 4-way
  • L2 캐시 – 코어당 512 kB (4방향 포함)
  • L3 캐시 – 4코어 CCX당 4MB 로컬 및 리모트, 칩릿당 2CCX, 16웨이 비포함.데스크톱 CPU에서는 최대 16 MB, 서버 CPU에서는 최대 64 MB

AMD Zen 2 마이크로아키텍처(2019)

  • L1 캐시 – 코어당 32kB 데이터 및 32kB 명령(8방향)
  • L2 캐시 – 코어당 512kB(8방향 포함)
  • L3 캐시 – 4코어 CCX당 16MB 로컬, 칩릿당 2CCX, 16방향 비포함.데스크톱 CPU에서는 최대 64 MB, 서버 CPU에서는 최대 256 MB

IBM Power 7

  • L1 캐시(명령 및 데이터)– 각 64 뱅크의 2번째 +1wr 포트 32kB, 8방향 어소시에이션, 128B 블록, 라이트 스루
  • L2 캐시 – 256kB, 8방향, 128B 블록, 라이트백(L1, 2ns 액세스 레이텐시 포함)
  • L3 캐시 – 8개 영역 4MB(총 32MB), 로컬 영역 6ns, 리모트 30ns, 각 영역 8방향 어소시에이션, DRAM 데이터 어레이, SRAM 태그[39] 어레이

「 」를 참조해 주세요.

레퍼런스

  1. ^ Hennessy, John L; Patterson, David A; Asanović, Krste; Bakos, Jason D; Colwell, Robert P; Bhattacharjee, Abhishek; Conte, Thomas M; Duato, José; Franklin, Diana; Goldberg, David; Jouppi, Norman P; Li, Sheng; Muralimanohar, Naveen; Peterson, Gregory D; Pinkston, Timothy Mark; Ranganathan, Prakash; Wood, David Allen; Young, Clifford; Zaky, Amr (2011). Computer Architecture: a Quantitative Approach (Sixth ed.). ISBN 978-0128119051. OCLC 983459758.
  2. ^ "Cache: Why Level It" (PDF).
  3. ^ 로널드 D.밀러, 라스 1세Eriksson; Lee A Fleisher, 2014.밀러의 마취 전자책.엘세비어 보건학 페이지 75ISBN 978-0-323-28011-2.
  4. ^ Albert Y. Zomaya, 2006.자연에서 영감을 얻은 혁신적인 컴퓨팅 핸드북:새로운 테크놀로지와 클래식 모델의 통합.Springer Science & Business Media, 페이지 298.ISBN 978-0-387-40532-2.
  5. ^ 리처드 C.도프, 2018년센서, 나노과학, 바이오메디컬 엔지니어링 및 기기:센서 나노사이언스 바이오메디컬 엔지니어링.CRC 프레스. 페이지 4. ISBN 978-1-4200-0316-1.
  6. ^ 데이비드 A.패터슨, 존 L.헤네시, 2004년컴퓨터 구성 및 설계:하드웨어/소프트웨어 인터페이스, 제3판엘세비어 552페이지ISBN 978-0-08-050257-1.
  7. ^ "Sir Maurice Vincent Wilkes British computer scientist". Encyclopædia Britannica. Retrieved 2016-12-11.
  8. ^ Berkeley, John L. Hennessy, Stanford University, and David A. Patterson, University of California. "Memory Hierarchy Design - Part 6. The Intel Core i7, fallacies, and pitfalls". EDN. Retrieved 2016-12-11.
  9. ^ 셰인 쿡, 2012년CUDA 프로그래밍: GPU를 사용한 병렬 컴퓨팅 개발자 가이드.Newnes. 페이지 107~109.ISBN 978-0-12-415988-4.
  10. ^ 브루스 헬링스워스; 패트릭 홀; 하워드 앤더슨; 2001.고도의 내셔널 컴퓨팅라우팅. 페이지 30-31.ISBN 978-0-7506-5230-8.
  11. ^ 리타 사후, 게간 사후인포매틱 프랙티스Saraswati House Pvt Ltd. 페이지 1 –ISBN 978-93-5199-433-6.
  12. ^ 필립 A.라플란테; 세포 J.Ovaska; 2011년.실시간 시스템 설계 및 분석:실무자를 위한 도구.존 와일리와 아들. 페이지 94~95ISBN 978-118-13659-1.
  13. ^ a b c Hennessey and Patterson. Computer Architecture: A Quantitative Approach. Morgan Kaufmann. ISBN 9780123704900.
  14. ^ Cetin Kaya Koc, 2008.암호화 엔지니어링Springer Science & Business Media, 479-480페이지.ISBN 978-0-387-71817-0.
  15. ^ 데이비드 A.패터슨, 존 L.헤네시, 2008년컴퓨터 구성 및 설계:하드웨어/소프트웨어 인터페이스.모건 카우프만, 페이지 489~492ISBN 978-08-092281-2.
  16. ^ 하비 G. 크래곤, 2000년컴퓨터 아키텍처 및 구현.케임브리지 대학 출판부, 95~97페이지ISBN 978-0-521-65168-4.
  17. ^ 베이커 모하마드, 2013년멀티코어 및 시스템 온 칩용 임베디드 메모리 설계.Springer Science & Business Media, 페이지 11~14.ISBN 978-1-4614-8881-1.
  18. ^ Gayde, William. "How CPUs are Designed and Built". Techspot. Retrieved 17 August 2019.
  19. ^ 보진GOklobdjija, 2017년.디지털 설계 및 제작CRC 프레스. 페이지 4. ISBN 978-0-8493-8604-6.
  20. ^ "Memory Hierarchy".
  21. ^ a b Solihin, Yan (2016). Fundamentals of Parallel Multicore Architecture. Chapman and Hall. pp. Chapter 5: Introduction to Memory Hierarchy Organization. ISBN 9781482211184.
  22. ^ 옌솔리힌, 2015년.병렬 멀티코어 아키텍처의 기초.CRC 프레스, 페이지 150ISBN 978-1-4822-119-1.
  23. ^ 스티브 히스, 2002년임베디드 시스템 설계엘세비어, 페이지 106. ISBN 978-08-047756-5.
  24. ^ Alan Clements, 2013.컴퓨터 구성 및 아키텍처:주제와 변주곡Cengage Learning, 페이지 588. ISBN 1-285-41542-6.
  25. ^ a b c d e Solihin, Yan (2009). Fundamentals of Parallel Computer Architecture. Solihin Publishing. pp. Chapter 6: Introduction to Memory Hierarchy Organization. ISBN 9780984163007.
  26. ^ "Performance Evaluation of Exclusive Cache Hierarchies" (PDF).
  27. ^ 데이비드 A.패터슨, 존 L.헤네시, 2017년.컴퓨터 구성 및 설계 RISC-V 에디션:하드웨어 소프트웨어 인터페이스.엘세비어 과학, 페이지 386~387.ISBN 978-0-12-812276-1.
  28. ^ 스테판 괴데커; 아돌피 호이시; 2001.수치 부하가 높은 코드의 퍼포먼스 최적화.SIAM, 페이지 11ISBN 978-0-89871-484-5.
  29. ^ 하비 G. 크래곤, 1996년메모리 시스템 및 파이프라인 프로세서Jones & Bartlett Learning, 47페이지ISBN 978-0-86720-474-2.
  30. ^ 데이비드 A.패터슨, 존 L.헤네시, 2007년컴퓨터 구성 및 설계, 리비전 인쇄, 제3판:하드웨어/소프트웨어 인터페이스.엘세비어 484페이지ISBN 978-08-055033-6.
  31. ^ "Software Techniques for Shared-Cache Multi-Core Systems". 2018-05-24.
  32. ^ "An Adaptive Shared/Private NUCA Cache Partitioning Scheme for Chip Multiprocessors" (PDF). Archived from the original (PDF) on 2016-10-19.
  33. ^ Akanksha Jain; Calvin Lin; 2019.캐시 교환 정책.모건 & 클레이풀 출판사 45쪽ISBN 978-1-68173-577-1.
  34. ^ David Culler; Jaswinder Pal Sing; Anoop Gupta; 1999.병렬 컴퓨터 아키텍처: 하드웨어/소프트웨어 접근법.걸프 전문가 출판사, 436페이지. ISBN 978-1-55860-343-1.
  35. ^ a b Stephen W. Keckler; Kunle Olukotun; H. Peter Hofstee; 2009.멀티코어 프로세서 및 시스템스프링거 과학 & 비즈니스 미디어, 페이지 182. ISBN 978-1-4419-0263-4.
  36. ^ a b "Intel Broadwell Microarchitecture".
  37. ^ a b "Intel Kaby Lake Microrchitecture".
  38. ^ "The Architecture of the Nehalem Processor and Nehalem-EP SMP Platforms" (PDF). Archived from the original (PDF) on 2014-08-11.
  39. ^ "IBM Power7".