<aside> 💡 목차


</aside>

CPU의 캐시 메모리

<aside> 💡 캐시는 결국 자주 찾는 데이터를 따로 저장하거나 가까이 둬서

빠른 속도로 데이터에 액세스 하기 위함

CPU도 똑같은 개념으로, 자주 가져오는 데이터들을 가까이에 두고 쓰기위해 CPU 내부에 캐시를 둬서 사용한다

</aside>

<aside> 💡 메모리 계층 구조 사용은 기술 비용과 성능의 차이에 의해 결정됩니다.

기술 비용과 성능의 차이에 의해 결정되며 프로그램 동작의 특성에 따라 효과적으로 결정됩니다.

→ 결국 하드웨어간 가성비는 너네가 알아서 소프트웨어적으로 찾으라는건데…

→ 그래서 Caller & Callee 개념이 고안?


Untitled

중요한 일을 빠르게 돌리기 위해 CPU내부에 캐시메모리를 추가

이렇게 된다면 이제 CPU 클럭속도와 메모리 속도가 똑같아지겠지?

실제로 아래 사진을 보면 CPU 내부에 캐시의 속도는 

CPU 속도와 거의 같은 속도로 작동하는것을 알 수 있다.

근데 레지스터는 빠르지만 용량이 작지?

그래서 컴퓨터가 필요한 모든 데이터를 저장할 수 없으니, 

MainMemory에 데이터를 저장해둬야 한다.

작은 메모리에서 중요한일을 처리하고,

하위 메모리에서 처리하던 덜 중요하던 일이 다시 중요해져서

작은 메모리로 다시 올 수 있느니까, 메모리 이동이 발생하게 되어

[Caller & Callee](https://cybecho.notion.site/Caller-Callee-7a680919978845dcafb6b771e2da48ae) 개념이 필요하게 된것이다

</aside>

캐시메모리의 특징

캐시는 느린 DRAM을 보완하기 위해 사용됨


캐시는 프로세서 성능을 저하시키는 느린 DRAM 메모리를 보완하기 위해 사용되는 작고 빠른 SRAM 메모리입니다.

캐시는 프로세서가 가장 자주 사용하는 데이터를 저장하여 프로세서가 메모리에 액세스하는 시간을 줄입니다.

캐시메모리는 투명하다


캐시는 사용자 소프트웨어에 투명하므로 프로그래머가 캐시를 직접 관리할 필요가 없습니다.

우리는 단 한번이라도 캐시크기를 고려해본적이 있던가?

캐시메모리는 ISA에 포함되어있지 않습니다

캐시는 비어있을수도, 차있을수도 있습니다


valid 라고 표기하며. 반드시 0이나 1 값이어야 합니다.

캐시에 무슨값이, 어디에 들어있는지 모르기 때문에, 계속 탐색해줘야합니다.

그래서 CPU와 가까운 캐시용량이 작습니다

그래서 Direct-mapped 개념을 고안함