Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- Array
- Repository 테스트
- 스터디
- Entity
- 테스트 코드
- 스네이크 케이스
- 원시 자료형
- OOP
- 자바
- 트랜잭션 락
- 배타락
- Service 테스트
- DTO
- 비즈니스 로직
- 낙관락
- do...while
- 배열
- 스프링 부트
- Java
- 디자인 패턴
- 자료구조
- Controller 테스트
- 비링크
- @Query
- 공유락
- 파스칼 케이스
- springDataJpa
- 마이크로서비스 아키텍처
- jvm
- @Version
Archives
- Today
- Total
menuhwang
캐시 메모리 본문
"CPU도 당신처럼 '예측'하고 미리 움직인다."

CPU
CPU는 연산 장치다.
연산 성능을 높이는 방법: 클럭 수 증가, 코어 수 증가, IO 속도 차를 줄인다
CPU는 RAM 보다 속도가 매우 빠르다.
다시 말해 RAM이 CPU에 비해 매우 느리기 때문에 CPU가 온전한 성능을 내지 못 한다.
그래서 CPU와 RAM의 속도 차이를 극복, 완충해주기 위해 캐시 메모리라는 것이 존재한다.
캐시 메모리

제조사 마다 다르지만 L1, L2 캐시는 코어 마다 따로 사용하는 경우도 있고 함께 사용하는 경우도 있다.
보통 L3 캐시는 코어들이 함께 사용한다.
L1, L2, L3 캐시들을 캐시 메모리라 한다.
예측
예를 들어 CPU가 아래와 같은 코드를 실행한다고 하자.
class Main {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
만약, 배열에 값을 하나씩 RAM에서 가져온다면 속도 차이 때문에 CPU가 제 성능을 내지 못 할 것이다.
그래서 CPU는 'arr[1] 접근.. arr[2] 접근.. 어? 그럼 그 뒤에 값도 사용하겠네?'라고 예측하여 캐시 메모리에 배열을 미리 가져와 속도 차이를 극복한다.
CPU는 필요한 데이터를 캐시 메모리에 있나 확인 후 없는 경우에 RAM에서 가져온다.
캐시 메모리에 필요한 데이터가 있다? -> 캐시 히트
캐시 메모리에 필요한 데이터가 없다? -> 캐시 미스