공부혜이드 2023. 2. 20. 19:20

프로그램 그니까 컴퓨터 사용할 때 메모리는 일부분만 사용한다



메모리는 CPU와 가까운 정도에 따라
계층적이다 CPU와 가까울수록 작고 자주쓰고 비싸다
<계층적메모리>
CPU-SRAM(캐시)-DRAM(메인메모리)-세컨더리메모리(하드디스크)

위쪽 계층에 원하는 데이터가 없으면 (=miss가 나면) 하위 레벨로 가서 원하는 데이터가 있는지 살펴본다
하위 메모리에서 상위 메모리로 복사해와서 결국 CPU로 데이터 전달한다. 이 때 데이터 복사 단위를 블럭이라고 함. 블럭은 n개의 워드( 워드는 cpu가 한번에 처리하는 데이터 단위)
CF) 원하는 데이터가 바로 있을 때는 hit이라고 표현한다
아하 그러면 블럭을 한번에 여러개 긁어오면 좋겠다
데이터를 한번에 많이 가져오면 좋으니까
(블럭갯수*블록크기= 캐시의 크기이고 ,캐시의 크기는 상수)
에서 갯수가 많으면 크기는 작아지겠군

흠 근데 크기가 작아지나 갯수가 작아지나
데이터의 양은 똑같은데 왜 이런짓을 할ㅋ가 모르겟당
-> 같은 맥락에서 블럭의 크기가 크면 블럭 갯수가 줄어든다 .

데이터 카피 단위가 커지니까 (=bandwidth 늘리기)
그래서 사람들은 bank라는 거를 만들었다
시 (SRAM)
캐시는 CPU와 직접 연결된 메모리이다
빠르게 데이터를 전달해야한다 .작고 빠르다
이 글에서 관심사는
1.좀 더 구체적으로 해당 데이터가 캐시에 들어있는지 어떻게 찾는지?
2.캐시의 어떤위치에 어떤 데이터가 있는지 어케 아는지?

일단 데이터가 캐시에 저장되는 방식을 보자
인덱스 valid tag data
태그는 뭐냐면 위에 언급했던 계층적 메모리 개념에서 쓰이는거다 . 태그를 이용해서 하위 메모리로 맵핑한다.

왜?? 왜죵? 왜냐면 밑에서 부터 데이터를 한단계 한단계 카피해와서 CPU까지 도달하기 때문!

캐시의 어느 부분으로 어느 메인메모리의 데이터를 카피 해왔는지 하위 단계에 원하는 데이터가 있는지ㅡ찾아볼 때 무작정 메모리를 전부 뒤지는 것이 아니고
그 중에 원하는 부분을 카피해 오는 것?

Valid bit는 .. 유효한지 나타내주는 비트다
YES(0) or NO (1) 두가지 상태가 있다
온오프에 대응하면 쉽다
원하는 데이터가 있으면 on!!
<메인메모리 DRAM>

데이터 저장 방식은
데이터 태그 인덱스 하위비트 (=오프셋)

위에 캐시의 인덱스(인덱스는 주소. 메모리 내부의ㅡ위치라구 생각하자)