캐시 메모리 Flashcards
캐시 메모리
[정의] CPU와 주기억장치의 속도 차이를 극복하기 위하여 CPU와 주기억장치 사이에 위치한 소형 고속 메모리(SRAM)
[필요성] DMA가 기억 장치를 사용하는 동안 CPU 캐시 이용 CPU 효율을 높임
[특징] 지역성 (블럭 단위 메모리 참조), 메모리 매핑(직접, 연관), 일관성 유지(공유 캐시)
[정보 교환] CPU –(word)– Cache –(block)– Memory – (page)– HDD
[구성요소]
- Cache : 지역적, 저용량, 고속화 의 특성을 가질수록 고성능 (L1,L2,L3 Cache)
- Block : Cache 와 Memory 간의 데이터 교환의 단위
- Mapping Function : 직접 사상, 완전 연관 사상, 집합 연관사상
- Replace Algorithm : LRU, FIFO,LFU,임의, Optimal
- Write Policy : Write Through, Write Back
캐시 일관성
[정의] Cache와 주기억장치간 저장된 데이터가 저장/수정/무효등에도 일관성을 유지하는 기법
[필요성] Local Cache(L1, L2)와 공유 메모리간 데이터 불일치 발생
[캐시 일관성 유지 기법]
<HW>
1. 버스 기반 감시 메커니즘 (스누프 프로토콜)
- 스누프 제어기 : 변경에 대한 자신의 Cache 블록 상태 제어
- 쓰기 갱신 : Write update 또는 Write broadcast
- 쓰기 무효 : Write 발생시 Cache에 Invalid 메시지 보냄
2. 디렉토리 기반 프로토콜 - Full Map, Limited, Chained
<SW>
1. 공유 캐시 사용 : 모든 프로세스가 하나의 Cache 공유
2. 공유 변수 Cache 미사용 : 성능 저하
</SW></HW>
MESI 프로토콜
[정의] 캐시 메모리가 가질수 있는 수정, 배타, 공유, 무효 4가지 상태를 정의한 캐시 일관성 유지 프로토콜
[4가지 상태] (수배공무)
1. 수정(Modified) : 데이터가 수정된 상태 (대상 데이터의 변경)
2. 배타(Exclusive) : 유일한 복사본이며, 주기억장치의 내용과 동일한 상태 (다른 프로세스와 격리)
3. 공유(Shared) : 데이터가 두개 이상의 프로세서 캐쉬에 적재되어 있는 상태 (정보 교환)
4. 무효(Invalid) : 데이터가 다른 프로세스에 의해 수정되어 무효화된 상태 (일관선 없는 상태)
* 실선은 프로세스의 동작에 의한 상태전이 (Clean,Flush)
* 점선은 다른 캐시에서의 변화에 의한 상태 전이(일관성 유지)
[캐시 일관성 유지 프로토콜]
- MEI : 공유가 없어 2개 이상 프로세스 비용 증가
- MSI : 처음 Read시 S(Shared) 상태
- MOESI : O(Owned) 추가
- MESIF : F(Forward) 추가
쓰기 정책
[정의] 캐시기억장치와 주기억장치에 저장된 데이터가 상이하게 존재하므로 데이터를 갱신하기 위한 정책
[Write Through] 즉시 쓰기
- 쓰기 동작 시 캐시와 주기억장치에 동시에 쓰는 방식
- (+) 구조가 단순, 캐시와 주기억장치의 일관성 유지
- (-) 버스의 트래픽 양이 많아짐, 쓰기 시간 길어짐(주기억 장치 쓰기 포함하므로)
[Write Back] 나중 쓰기
- 캐시에만 쓰기를 하고 해당 데이터가 swap-out될때 주기억장치에 복사하는 방식
- (+) 쓰기 시간 단축, 주기억 장치 쓰기 동작 최소화
- (-) 캐시와 주기억장치간 일관성 어려움, 블록 교체 시 캐시의 상태 비트 확인 절차 필요
캐시 미스
[정의] Cache Memory의 설계목표는 Cache Miss를 줄여서 주기억장치와 캐시간의 일관성을 유지하여 오버헤드 최소화 및 지연시간을 최소화
[원인/해결방안]
- 콜드 미스 : 데이터를 최초로 읽을 때 발생 / 캐시라인 증가, 프리펫칭
- 용량 미스 : 캐시의 용량 부족으로 발생 / 캐시 크기 증가
- 충돌 미스 : 캐시의 연관도가 부족해 발생 / 캐시 연관도 증가
- 코히런스 미스 : 다른 프로스세에 의해 캐시 라인이 무효화되어 발생 / MESI, 스누피 프로토콜
* Miss를 줄이기 위한 해결 방안들은 액세스 타임,공간,비용 증가를 동반 이에 대한 고려 필요
메모리 주소 사상
[정의] 주기억 장치에서 필요한 정보를 캐시 기억장치에 기억시키기 위해 정보를 옮기는 기법
[유형]
1. 직접 사상 (Direct Mapping) 태그,라인,단어
- 주기억장치에서 PMT(Page Mapping Table)을 유지/관리
- 주소 변환에 많은 시간이 소요
2. 간접 사상 (Associate Mapping) 태그,단어
- 고속캐시(Associative memory)에서 매핑테이블을 보관
- 고비용
3. 집합 연관 사상 (Set-Associative mapping) 태그,세트,단어
- PMT를 주기억장치와 연관기억장치에 분산 저장
- 지역성(Locality)에 따라 재사용 가능성이 높은 최근 참조된 페이지는 AMP(Associate Mapping Table)에 보관하고 나머지는 PMT에 보관
MMU
[리드] CPU의 메모리 접근 관리
[정의] 가상 메모리 주소를 물리 메모리 주소 변환등 메모리 관리 역활을 담당하는 컴퓨터 핵심 장치
[주요기능] (메주캐버뱅)
- 주소변환 : 논리적 주소와 물리적 주소 연결
- 메모리 보호 : 메모리에 대한 접근 행동 결정 및 3가지 타입 결정(Strongly-ordered, Device, Normal)
- 캐시관리 : 캐시 정책 결정, TLB
- 버스 중재 : 버스 요구, 버스 승인, 버스 사용중 신호
- 뱅크 스위칭 담당 : 8비트 아키텍처인 경우
[MMU 주소 변환 과정]
1. 가상 주소 전달 : CPU에서 메모리 접근을 위해 MMU에 가상 주소 전달
2. 페이지 테이블 검색 : TTB(Translation Table Base Address)부터 시작 페이지 테이블 검색
3. 페이지 테이블 엔트리 전달 : 검색된 페이지 테이블 안에서 물리주소를 찾아 MMU에 전달
4. 물리주소 접근 : 주소 신호 발생(RAS, CAS)
5. 데이터 전달 : 메모리 주소안 데이터 출력 CPU에 전달
* MMU는 2회 메모리 접근(주소 변환 1회, 데이터 1회)으로 성능 저하, 극복위해 TLB 활용
[TLB를 이용한 주소 변환]
- MMU에서 Page Table을 탐색하기 전에 TLB를 먼저 탐색
- 자주 참조되는 Page Table을 캐시 저장(지역성) MMU의 주소변환 속도를 개선
- 1. 가상주소 전달 2.가상주소 번호 전달 3.페이지 테이블 엔트리 반환 4.물리주소 접근 5. 데이터 전달
TLB
[리드] 페이지 탐색 시간 단축
[정의] 물리 주소로의 빠른 접근 위해 Locality기반 IP매핑을 저장, 병렬 탐색의 MMU내의 고속 캐시 메모리
[기본원리] 시간 지역성, 연관 사상, 병력 고속 탐색
[필요성] 직접사상 방식 문제 극복, 메모리 엑세스 시간 단축
[동작절차]
1. TLB Lookup : 페이지 번호 병렬 검색
2. TLB Hit : 프레임 번호(F)를 오프셋 번호(D)와 합쳐 물리 주소 생성
3. TLB miss : 페이지 테이블에서 프레임 번호 검색 물리 주소 생성, 참조한 페이지 번호 TLB에 갱신
4. Page Fault : 보조기억 장치에서 페이지 반입 후 페이지 테이블과 TLB 갱신
5. 메모리 접근 : 물리 메모리에 직접 접근후 데이터 반환
[차별화] TLB vs 직접사상 방식
- (사상방식) 연관 사상 매핑 / 직접 매핑
- (위치) 고속의 특수 캐시 / 주기억장치 내부
- (동작원리) TLB 모든항목 병렬 고속 탐색 / 주기억장치에 2번 접근
* 직접사상방식 성능지연 극복 위해 TLB 사용
[고려사항] Page 크기, 다중 Page(적은 내부 단편화 장점), 도입비용
지역성
[리드] 메모리 참조 특성 이해
[정의] CPU가 주기억장치의 특정부분 (지역)에 위치한 프로그램 코드나 데이터를 집중적으로 엑세스하는 특성
[배경] CPU와 메모리의 속도 차이, 멀티 프로그래밍 환경 Thashing 문제
[필요성] Hit율 최대화, Miss율 최소화,Thrashing 최소화
* 한번 참조한 데이터는 다시 참조될 가능성이 높고, 주변의 데이터 역시 같이 참조될 가능성이 높다는 이론
[지역성 유형] (시공순)
1. 시간적 : 동일주소, 반복참조/ 하나의 페이지를 일정시간동안 집중 액세스 (Loop, LRU, 서브루틴, 공통변수)
2. 공간적 : 일정위치 페이지를 집중적으로 액세스 / 인접,연속 주소 참조 (Array, Pre-fetch(선인출))
- 분기 미 발생 시 저장 순서대로 인출되는 순차적 지역성 포함
3. 순차적 : 기억장치에 저장된 순서대로 인출, 실행될 가능성이 높음 (Sequential Code, 순차실행)
* 페이징 교체로 인한 심각한 CPU성능 저하를 나타내는 스레싱의 해결 방안으로 지역성을 활용
[활용 사례]
- Cache 메모리 Hit-Rate 향상 : LRU 알리고리즘 (시간적), Pre-fetch 알고리즘 (공간적)
- Thrashing 예방 : Working-Set 기반 알고리즘, PFF 알고리즘
- 메모리 구조 효율성 향상 : 지역성 기반 기억장치 계층화, TLB기반 연관 사상 활용