메모리 계층 및 캐시
메모리 계층은 레지스터, 캐시, 주 메모리, 보조 기억 장치와 같은 저장 장치를 계층적으로 구성하여 작고 빠른 계층에 가장 자주 사용될 가능성이 있는 데이터를 보관함으로써 프로그램에 크고 빠른 메모리라는 환상을 제공합니다.
Definition
메모리 계층은 속도, 비용, 용량이 다른 저장 기술을 계층적으로 배열한 것으로, 평균 접근 시간을 최소화하기 위해 자주 그리고 최근에 접근된 데이터가 더 빠르고 작은 계층(가장 중요한 캐시)에 상주하도록 관리됩니다.
Scope
이 영역은 참조 지역성을 활용하여 메모리가 계층으로 구성되는 이유와 방법을 다룹니다. 여기에는 캐시 구조(배치, 교체 및 쓰기 정책), 다단계 캐시, 프로세서 간 캐시 일관성, 가상 메모리 및 주소 변환, 그리고 기본 DRAM 및 신흥 메모리 기술이 포함됩니다. 프로세서 실행 자체(프로세서 마이크로아키텍처)와 대규모 파일 및 장치 저장소(저장 및 I/O 시스템)는 제외되지만, 이 두 영역과 인접해 있습니다.
Sub-topics
Core questions
- 참조 지역성이 계층화된 메모리 계층을 효과적으로 만드는 이유는 무엇입니까?
- 캐시는 배치, 연관성, 교체 및 쓰기 정책 측면에서 어떻게 구성됩니까?
- 여러 캐시가 동일한 메모리의 복사본을 보유할 때 일관성은 어떻게 유지됩니까?
- 가상 메모리는 주소를 어떻게 변환하고 보호 및 대용량 메모리의 환상을 제공합니까?
- DRAM 및 신흥 메모리의 특성은 시스템 성능에 어떻게 영향을 미칩니까?
Key concepts
- 시간적 및 공간적 지역성
- 캐시 적중 및 미스
- 연관성 및 교체 정책
- 쓰기 관통 및 쓰기 복귀
- 다단계 캐시
- 캐시 일관성
- 가상 메모리 및 페이징
- 변환 색인 버퍼 (TLB)
- DRAM 및 메모리 대역폭
- 평균 메모리 접근 시간
Key theories
- 참조 지역성
- 프로그램은 최근에 접근한 데이터를 재사용하는 경향이 있고(시간적 지역성), 인접한 주소에 접근하는 경향이 있습니다(공간적 지역성). 메모리 계층은 최근에 사용된 블록을 캐싱하고 인접한 블록을 함께 가져옴으로써 이 두 가지를 모두 활용합니다.
- 캐시 설계 트레이드오프
- 캐시 성능은 미스율, 미스 페널티, 적중 시간에 의해 결정되며, 크기, 블록 크기, 연관성, 교체 및 쓰기 정책을 통해 조정됩니다. 고전적인 분석은 이러한 선택의 목표로 필수 미스, 용량 미스, 충돌 미스를 식별합니다.
Mechanisms
프로세서가 데이터를 요청하면 캐시를 먼저 확인합니다. 캐시 적중(hit)은 데이터를 빠르게 반환하고, 캐시 미스(miss)는 하위 계층에서 블록을 가져오며 교체 정책에 따라 다른 블록을 제거할 수 있습니다. 쓰기는 쓰기 관통(write-through) 또는 쓰기 복귀(write-back) 방식으로 전파되며, 일관성 프로토콜은 여러 캐시의 일관성을 유지합니다. 가상 메모리는 페이지 테이블과 TLB(translation lookaside buffer)를 통해 프로그램 주소를 물리적 DRAM에 매핑하고 보호를 강화하는 변환 단계를 추가합니다.
Clinical relevance
메모리 계층은 실제 성능을 자주 지배합니다. 프로세서가 주 메모리보다 훨씬 빠르기 때문에 캐시 동작과 지역성은 원시 명령어 속도보다 더 중요할 수 있습니다. 캐시 인식 데이터 레이아웃, 블로킹 및 프리페칭은 고성능 컴퓨팅, 데이터베이스 및 머신러닝 커널의 핵심이며, 캐시 타이밍은 보안 측면 채널의 원천이 되었습니다.
History
모리스 윌크스(Maurice Wilkes)는 1965년에 캐시('슬레이브 메모리')를 제안했으며, 캐시는 IBM System/360 Model 85와 같은 상업용 기기에 도입되었습니다. 가상 메모리는 1960년대 초 아틀라스(Atlas) 컴퓨터에서 시작되어 데닝(Denning)의 작업 집합(working-set) 모델에 의해 공식화되었습니다. 앨런 제이 스미스(Alan Jay Smith)의 1982년 연구는 캐시 설계 지식을 통합했으며, 프로세서-메모리 속도 격차가 커지면서 다단계 캐시와 정교한 일관성 프로토콜이 표준이 되었습니다.
Debates
- 지역성의 하드웨어 대 소프트웨어 관리
- 투명한 하드웨어 캐싱과 명시적으로 관리되는 메모리(스크래치패드, 소프트웨어 제어 프리페치) 사이에는 지속적인 긴장이 있습니다. 하드웨어 캐싱은 일반적이고 프로그래밍하기 쉽지만, 명시적 관리는 특수 워크로드에 대해 더 예측 가능하고 효율적일 수 있습니다.
Key figures
- Maurice Wilkes
- Alan Jay Smith
- Peter J. Denning
- John L. Hennessy
- David A. Patterson
Related topics
Seminal works
- hennessy2019
- smith1982cache
- patterson2020
Frequently asked questions
- 캐시가 주 메모리에 비해 그렇게 작은데도 왜 효과적입니까?
- 프로그램이 지역성을 나타내기 때문입니다. 어떤 순간에도 프로그램은 작은 작업 집합의 데이터만 반복적으로 사용하며, 접근은 인접한 주소에 집중됩니다. 따라서 해당 작업 집합을 보유하는 작은 캐시는 대부분의 요청을 충족시킵니다.
- 캐시와 가상 메모리의 차이점은 무엇입니까?
- 둘 다 더 빠르고 작은 계층과 더 느리고 큰 계층 사이에서 데이터를 이동시킵니다. 캐시(하드웨어에서 관리)는 주 메모리의 블록을 보유합니다. 가상 메모리(운영 체제와 함께 관리)는 프로그램 주소를 물리적 메모리에 매핑하고 디스크에서 데이터를 페이지로 주고받으며, 보호 기능과 물리적 RAM보다 큰 주소 공간을 제공합니다.