최신 CPU에서 여러 수준의 캐시가 사용되는 이유는 무엇입니까?

최신 CPU에서 여러 수준의 캐시가 사용되는 이유는 무엇입니까?

나는 최근에 프로세서(주로 멀티프로세서)에 대해 읽었고 다중 레벨 캐시의 개념을 접하게 되었습니다. 이러한 설계에는 성능을 높이기 위해 여러 수준의 캐시가 있습니다.

그러나 캐시를 추가하면 프로세서 성능이 어떻게 향상되는지 알 수 없습니다. 대신 기존 캐시의 크기를 늘리면 어떨까요?

답변1

여러 캐시 수준을 사용하는 것은 부분적으로는 멀티 코어 프로세서를 조정하는 메커니즘이고 부분적으로는 가격과 성능 간의 절충안입니다.

다중 코어가 있는 프로세서에서는 각 코어에 자체 L1 캐시가 있습니다. 이를 통해 코어는 다른 코어를 방해할 염려 없이 캐시에서 읽고 쓸 수 있습니다. 그러나 코어에는 특정 정보를 쉽게 교환할 수 있도록 공유 저장소가 필요합니다. L2 캐시는 모든 코어가 공유하므로 모든 스레드가 정보를 사용할 수 있는 일종의 공용 저장 공간으로 사용됩니다.

L2 캐시와 L3 캐시의 차이점은 타협 부분입니다. 캐시는 정적 RAM 또는 SRAM으로 구성됩니다. 이는 주 메모리를 구성하는 동적 RAM(DRAM)과 다릅니다. 동적 RAM은 주기적으로 "새로 고침"이 필요합니다. 즉, 시간이 지남에 따라 DRAM 셀을 읽고 다시 쓰지 않으면 그 가치를 잃게 됩니다. 메모리 컨트롤러는 이 작업을 자동으로 수행하지만 메모리 컨트롤러가 이 작업을 수행해야 할 때마다(초당 수천 번) 완료될 때까지 프로세서에 대한 값을 읽거나 쓸 수 없습니다. 이로 인해 DRAM 속도가 느려집니다. SRAM에는 이러한 제한이 없습니다. SRAM은 작동 전력이 있는 한 그 가치를 무기한 유지하므로 속도가 훨씬 빨라집니다. 따라서 캐시(L2 및 L3 모두)는 SRAM으로 구성됩니다. 문제는 SRAM이매우값비싼; 4GB 고속 DRAM은 약간 비싸지만 저렴하지만 4GB SRAM은 가격대를 훨씬 뛰어넘습니다.

따라서 프로세서 제조업체가 설계에 SRAM을 추가하기로 결정할 때마다 비용이 눈에 띄게 높아집니다. SRAM은 여러 가지 속도로 제공되며 예상할 수 있듯이 더 빠른 SRAM은 느린 SRAM보다 비쌉니다. 따라서 프로세서 제조업체는 두 가지 모두에 맞게 최적화하려고 노력했습니다.속도그리고비용고속 SRAM과 저속 SRAM을 모두 사용합니다. 그런 다음 프로세서는 가장 필요한 값을 더 빠른 캐시(L2)에 배치하고 덜 필요한 정보를 더 느린 캐시(L3)에 배치하도록 설계됩니다. 프로세서의 마이크로코드에서 이 메모리를 주의 깊게 관리하면 균등한 절충안이 생성됩니다. 즉, 캐시가 더 많고 일부 캐시(프로세서에 가장 필요한 캐시)가 매우 빠릅니다.

요약하자면, 프로세서에는 프로세서 가격을 크게 올리지 않고도 프로세서 캐시의 용량을 늘리기 위해 다중 레벨 캐시가 있습니다. 이러한 신중한 혼합을 통해 더 빠르고 저렴한 프로세서를 만들 수 있습니다.

답변2

다중 레벨 캐시는 주로 용량과 액세스 비용(대기 시간/시간 및 에너지 모두) 간의 절충안입니다.

도구를 구입하는 것과 비교하는 것이 도움이 될 수 있습니다. 로컬 철물점(L1 캐시와 비교)에 가는 것은 빠르고 에너지를 덜 사용하지만, 로컬 철물점은 규모가 작고 원하는 특정 도구가 없을 가능성이 높습니다. 대형 철물점(L2 캐시와 비교)에 가면 더 많은 시간과 에너지가 필요하지만(거리가 멀고 도구를 찾는 데 시간이 더 오래 걸립니다) 도구의 재고가 있을 가능성이 더 높습니다. 대형 철물점에도 도구가 없으면 도구가 거의 확실하게 있는 제조업체의 창고(메인 메모리와 비교)에 갈 수도 있습니다. 창고에도 도구가 없으면 제조업체의 공장(디스크와 비교)에서 더 많은 도구를 생산할 때까지 훨씬 더 오랜 시간이 걸릴 것으로 예상됩니다.

찾고 있는 하드웨어 공급품의 다양성이 일반적으로 크다면(매우 큰 L1 캐시가 있는) 대형 철물점 옆에 사는 것은 시간을 절약할 수 있지만(상업적 작업 부하를 대상으로 하는 일부 PA-RISC 프로세서는 이렇게 했습니다) 일반적으로 공급품의 다양성이 적습니다. 사용하면 소규모 지역 상점에서 해당 품목을 재고로 보유할 가능성이 매우 높으며(캐시 적중 가능성이 높음) 일반적으로 사용되는 품목을 찾는 것이 소규모 상점에서 더 빠릅니다.

jcrawfordor가 언급했듯이 여러 코어 간에 캐시 수준을 공유하면 다음과 같은 이점이 있습니다. 동일한 메모리 콘텐츠의 반복 저장을 방지하고 저장 용량의 불균형한 사용을 허용합니다(예: 하나의 코어가 공유 L2와 함께 모든 L2 저장소를 사용할 수 있음) 코어당 L2 캐시를 사용하면 코어가 자체 L2 캐시로 제한되며 코어 간 통신을 단순화하고 속도를 높입니다(L1 누락 시에도 동일한 L2에 액세스하므로 다른 L2 캐시가 있는지 확인할 필요가 없습니다). 데이터가 있었습니다.)

(유사한 공유 이점은 L2 및 별도의 L1 명령 및 데이터 캐시와 관련하여 적용될 수 있지만 이러한 콘텐츠 공유는 일반적으로 피하며(즉, 캐시 라인에는 일반적으로 코드 또는 데이터만 있음) 자체 수정 코드와 같은 덜 일반적인 작업은 제외됩니다. JIT 컴파일에서는 명령어 캐시와 데이터 캐시 간의 통신이 거의 없습니다.)

그러나 공유에는 오버헤드가 있습니다. 백화점에서 쇼핑하는 것과 비교할 수 있습니다. 상점을 이용하는 쇼핑객이 많을수록 특정 계산대에 줄이 생길 확률이 높아집니다(L2 캐시의 은행과 비교). 또한, 공유 입구/출구는 지연을 발생시킵니다(캐시 액세스에 대한 중재 지연과 비교). 여러 문을 제공하면 더 높은 처리량을 지원할 수 있지만 문을 선택하는 데 필요한 시간이 늘어납니다. 선택 오버헤드는 매우 작을 수 있습니다(그러나 그렇지 않은 경우는 아님). 존재) 출입하는 사람이 없지만 매장이 붐비는 경우 문 선택이 더욱 복잡해집니다. 매장이 바쁠 것이라고 가정하면 결정 지연을 어느 정도 피할 수 있습니다. 그러나 저장소가 바쁘지 않으면 가장 편리한 문을 사용하는 것이 더 빠를 것입니다(마찬가지로 캐시는 캐시가 필요하지 않은 경우에도 메모리 요청 정보를 보관하기 위해 버퍼를 할당하는 데 추가 시간이 걸릴 수 있습니다). 사용 중이 아닙니다. 이러한 최적화가 없으면 캐시가 사용 중인 경우 캐시가 사용 중인지 확인하고 버퍼 항목을 할당하는 두 단계가 순차적으로 발생하므로 총 시간은 두 단계의 합이 됩니다. 캐시가 사용 중이지 않으면 버퍼 할당 단계가 회피됩니다.

또한 공유는 캐시의 제한된 연관성을 고려할 때 충돌 누락 빈도를 증가시킬 수 있으며 캐시 교체 선택이 좋지 않을 수 있습니다(예: 데이터 재사용이 거의 없는 스트리밍 액세스 패턴을 사용하는 한 코어는 데이터를 자주 재사용하는 다른 코어보다 용량을 사용하는 경향이 있음). 데이터를 사용하면 더 큰 이점을 얻을 수 있습니다). 이러한 단점을 줄이는 기술이 있지만 복잡성을 추가하고 다른 비용이 발생합니다.

답변3

더 가까운 캐시는 크기가 훨씬 작습니다.이에 대한 내용은 다음과 같습니다., 속도에 대해서는 아무것도 찾을 수 없지만 아마도 프로세서나 마더보드 속도로 제한되어 있을 것입니다(무의미하고 비용이 많이 듭니다).

CPU 캐시에는 세 가지 수준(단일 코어에 2개), RAM(보조) 및 하드 드라이브(3차)가 있습니다.

답변4

프로세서에는 l1, l2 및 l3과 같은 다중 레벨 캐시가 있습니다.

L1은 가장 빠른 캐시이지만 가장 비쌉니다. L2는 두 번째로 나오며 가장 많이 논의됩니다. 그리고 L2 다음에는 L3이 옵니다.

캐시가 빠를수록 프로세서가 데이터를 읽고 쓰는 속도가 빨라집니다.

그러나 기업은 모든 프로세서의 성능과 비용 중에서 선택해야 하므로 가격에 따라 프로세서에 다중 레벨 캐시를 도입해야 합니다.

관련 정보