캐시
: cpu의 업무처리에 필요한 정보를 빠르게 가져올 수 있게 해주는 역할
-->cpu와 메모리 사이의 데이터 전송 레이턴시 개선을 위해 사용되는 전략이다.
캐싱 알고리즘
: 지역성(Locality)
캐시도 나름의 근거를 토대를 가지고 메모리로부터 데이터 캐싱을 하는 것 . 엉떵한 데이터만 캐싱하면 cache miss 확률만 올라가서 시간과 공간을 쓸데없이 잡아먹는다. 근거가 중요!
- 시간적 지역성
지금 어떤 데이터를 사용했다면 가까운 미래에 재사용 할 가능성이 있다고 믿기 - 공간적 지역성
지금 어떤 데이터를 사용했다면 그와 인접한 데이터도 사요할 가능성이 있다고 믿기
cpu는 다수의 코어를 보유하고 있고 각 코어는 자체 캐시를 보유한다.
그림에서처럼 각 캐시들이 코어랑 거리가 멀수록 실제로도 멀어진다고 생각하여야한다. -> 거리가 가까울수록 데이터를 가져오는 속도가 빨라지고 멀수록 느려진다.
캐시 코히런스(일관성) 문제
: 캐시메모리에 저장된 데이터가 변경되었을 경우 해당 데이터를 동시에 보관하고 있다면 이 데이터의 일관성과 무결성은 어떻게 보장되어야 하는가에 대한 문제
-->MSI프로토콜을 사용
(MSI프로토콜 : 각각의 캐시 라인들에 상태를 부여-> 각 캐시 라인의 상태에 따라 최신값으로의 동기화 여부를 결정하는 프로토콜)
- S(Shared) 상태
가장 기본 상태. 동기화가 완료된 직후거나 값에 변함이 없으면 캐시 라인은 해당 상태를 유지 - M(Modified) 상태
-코어가 캐시 및 메모리의 값을 새롭게 바꾸려고 할 때 캐시 라인의 상태를 S→M 상태로 바꿔준다.
-이러한 상태의 캐시 라인이 있으면 메모리는 해당 데이터가 새롭게 본인에게 쓰이기 전까지는 다른 코어의 요구를 거부. - I (Invalid) 상태
-캐시 라인의 상태가 유효하지 않음을 뜻한다.
-이 상태는 M 상태로 만들고 새롭게 데이터를 쓰려는 코어가 본인의 캐시 라인을 제외한 다른 캐시 라인들의 상태를 전부 I 상태로 바꾸어 놓는 것
'스파르타 부트캠프(spring)' 카테고리의 다른 글
[내일배움캠프_Spring] 자바 Spring 입문_메서드_230103 (0) | 2023.01.03 |
---|---|
[내일배움캠프_spring] 주간회고 WIL - 8주차 (0) | 2023.01.01 |
[내일배움캠프] 자바 Spring 입문_Rest API_221222 (0) | 2022.12.22 |
[내일배움캠프_Spring] 자바 Spring 입문_테스트코드_221221 (0) | 2022.12.21 |
[내일배움캠프_Spring] 자바 Spring 입문_221220 (0) | 2022.12.21 |