특정 CPU 캐시 메모리가 다른 CPU 캐시보다 빠른 이유를 이해하려고합니다. 캐시 메모리를 주 메모리와 비교할 때 액세스 속도에 영향을 줄 수있는 메모리 유형 (SRAM 대 DRAM) 및 로컬 리티 문제 (온칩 대 메모리 버스 통과)가 있습니다. 그러나 L1과 L2는 일반적으로 동일한 칩 또는 적어도 동일한 다이에 있으며 동일한 유형의 메모리라고 생각합니다. 그렇다면 L1이 더 빠른 이유는 무엇입니까?
특정 CPU 캐시 메모리가 다른 CPU 캐시보다 빠른 이유를 이해하려고합니다. 캐시 메모리를 주 메모리와 비교할 때 액세스 속도에 영향을 줄 수있는 메모리 유형 (SRAM 대 DRAM) 및 로컬 리티 문제 (온칩 대 메모리 버스 통과)가 있습니다. 그러나 L1과 L2는 일반적으로 동일한 칩 또는 적어도 동일한 다이에 있으며 동일한 유형의 메모리라고 생각합니다. 그렇다면 L1이 더 빠른 이유는 무엇입니까?
답변:
아니요, 동일한 제조 공정을 사용하는 동일한 칩에 있더라도 동일한 유형의 RAM이 아닙니다.
모든 캐시 중에서 L1 캐시는 적절한 "적중"속도를 제공하기 위해 필요한 용량과 비교하여 가장 빠른 액세스 시간 (가장 짧은 대기 시간)을 가져야합니다. 따라서 더 큰 트랜지스터와 더 넓은 금속 트랙을 사용하여 공간과 전력을 절약합니다. 높은 수준의 캐시는 더 높은 용량을 가져야하지만 속도가 느려질 수 있으므로 더 꽉 채워진 더 작은 트랜지스터를 사용합니다.
L1은 일반적으로 디코딩 된 명령어의 저장소로 사용되는 반면 L2는 단일 코어의 일반 캐시입니다. 캐시가 작을수록 크기가 작고 일반적으로 빠릅니다. PC 프로세서의 대략적인 경험으로 :
L1 캐시 : 2-3 클록 사이클 액세스
L2 캐시 : ~ 10 클록 사이클 액세스
L3 캐시 : ~ 20-30 클록 사이클 액세스
L1 캐시의 설계는 캐시 레이턴시를 가능한 낮게 유지하면서 적중률 (원하는 명령 주소 또는 데이터 주소가 캐시에있을 확률)을 최대화해야합니다. 인텔은 3주기의 대기 시간으로 L1 캐시를 사용합니다. L2 캐시는 하나 이상의 L1 캐시간에 공유되며 종종 훨씬 더 큽니다. L1 캐시는 적중률을 최대화하도록 설계되었지만 L2 캐시는 미스 페널티 (L1 미스가 발생할 때 발생하는 지연)를 최소화하도록 설계되었습니다. L3 캐시가있는 칩의 경우 목적은 칩 설계에 따라 다릅니다. 인텔의 경우 L3 캐시는 2002 년에 4 방향 멀티 프로세서 시스템 (Pentium 4 Xeon MP 프로세서)에 처음 등장했습니다. 이러한 의미에서 L3 캐시는 멀티 스레드 환경에서 지연을 크게 줄이고 FSB에서 부하를 줄였습니다. 당시
견적은 공급 여기 "Pinhedd의"응답에서.
속도가 크기에 반비례하는 몇 가지 이유가 있습니다. 가장 먼저 떠오르는 것은 컨덕터의 물리적 지배입니다. 여기서 신호 전파 i는 빛의 속도에서 일부 요인으로 제한됩니다. 메모리 타일 내에서 가장 먼 거리를 이동하는 데 전기 신호가 걸리는 한 작업이 소요될 수 있습니다. 다른 관련 이유는 클럭 도메인의 분리 때문입니다. 각 CPU는 자체 클럭 생성기를 실행하여 CPU가 다중 GHz 클럭에서 실행될 수 있도록합니다. 레벨 1 캐시는 시스템에서 가장 빠른 CPU 클럭에서 실행되고 동기화됩니다. 반면에 레벨 2 캐시는 많은 CPU를 지원해야하며 다른 (느린) 클럭 도메인에서 실행되고 있습니다. L2 클럭이 느릴뿐만 아니라 (더 큰 타일) 클럭 도메인 경계를 넘어 가면 또 다른 지연이 발생합니다. 물론 팬 아웃 문제 (이미 언급)가 있습니다.
고유 한 성능 특성 외에도 로컬 리티도 중요한 역할을합니다 (L1이 CPU에 더 가깝습니다). 모든 프로그래머가 기억해야 할 것에 따르면 :
온다이 L2 캐시의 경우 액세스 시간의 대부분 (아마도 대부분)이 와이어 지연으로 인해 발생한다는 점에 주목해야합니다. 이는 캐시 크기가 증가 할 때만 악화 될 수있는 물리적 제한입니다. 프로세스 축소 만 (예를 들어, 인텔 라인업에서 Merom의 경우 60nm에서 Penryn의 경우 45nm로) 이러한 수치를 향상시킬 수 있습니다.