Computer Science
탄탄한 기반 실력을 위한
전공과 이론 지식 모음
Today I Learned!
배웠으면 기록을 해야지
TIL 사진
Flutter 사진
Flutter로 모바일까지
거꾸로캠퍼스 코딩랩 Flutter 앱개발 강사
스파르타코딩클럽 즉문즉답 튜터
카카오테크캠퍼스 3기 학습코치
프로필 사진
박성민
임베디드 세계에
발을 들인 박치기 공룡
임베디드 사진
EMBEDDED SYSTEM
임베디드 SW와 HW, 이론부터 실전까지
ALGORITHM
알고리즘 해결 전략 기록
🎓
CAU 소프트웨어학부
텔레칩스 차량용 임베디드 스쿨 3기
애플 개발자 아카데미 1기
깃허브 사진
GitHub
프로젝트 모아보기
Instagram
인스타그램 사진

학부생 CS/컴퓨터 시스템 설계

Computer System Design - 11 : Cache Memory 2

sm_amoled 2019. 6. 10. 00:19

 

 

 

 

 

 

CPU마다 Lv1 Cache를 가지고있기에, 같은 주소에 다른 데이터를 저장할 가능성이 있다.

(Lv1의 같은 주소에 서로다른 데이터를 저장 -> Lv2는 Update되지 않아 서로 꼬이는 경우) : Cache Coherence Problem

=> MESI protocol

Lv1 Cache #1, Cache #2가 참조하는 메모리주소가 같은 경우, 건드리지 않는다.

Handling Writes on Cache Memory


Read Miss ( 읽기에 실패 ) : 메모리에서 해당 데이터를 가져오면 해결

Write Miss ( 쓰고자하는 메모리주소가 Cache에 없는 경우 ) : ???

아래는 HardWare가 알아서 처리해주는 문제에 해당한다. 원리를 알아두자.

Write Allocated - Write Back

메모리에서 데이터블럭을 Cache로 가져와 Cache에서 작성 + Cache의 Dirty Bit을 Set ( 메인메모리의 Data는 오래된 Data임을 알림 )

Write No-Allocated - Write Through

메모리에 직접 접근해 데이터를 작성. 따라서 Cache에 Dirty Bit이 필요없다.

Replacement Policy


Cache의 Set중의 Way가 가득차있다면 (이미 모든 Way에 Load를 한 상태) 새로운 data의 load를 위해 어떤 Way를 덮어씌워야 할까?

1. Least Resently Used : LRU

각 Set에 포함되어있는 LRU Bit을 보고 가장 오래된 Way를 선택해 초기화시키는 방법. ( Way 마다 붙어있는 것이 아니다! )

4개의 Way가 있다면 4!= 24 … 24개의 State가 존재하는 셈 ( 1234, 1243, 1324, 1342 … ) 따라서 4개의 Way를 처리하기 위해서는 16 < 24 < 32 이므로 최소 5개의 LRU Bit이 필요하다.

동작하는 방식은 State Machine이다. 1234에서 3을 사용하면 1243 으로 3이 맨 뒤로 가는것 처럼, 24개의 State에 대한 State Machine이 설계되어있음. Way가 많아질수록 기하급수적으로 더 복잡해진다. ( 팩토리얼으로 복잡해진다 )

2. Random Access

무작위로 초기화시킬 Way를 선택하여 초기화시키는 방법.

High-Associated Cahce ( Way가 많은 Cache 구조 )에서 잘 작동한다. ( 12 way는 state가 무려 479,001,600개 … state machine을 만드는 것 보다 무작위로 접근하는 것이 더 효율적이다. )

320x100