상위에서 하위의 값을 가져오는 방식으로 값을 읽음.

값이 없을 경우 더 아래 계층에서 값을 탐색하여 가져옴.

계층이 높을 수록 용량은 적지만 속도는 빠름

 

 

# Hit / Miss

- 값을 찾으면 "Hit"

     > "Hit ratio" = 1 - "Miss ratio"

- 못찾으면 "Miss"

 

# 데이터 크기 구하기

- 총 32bit 에서

- 캐시 크기 2^n block

- 블록 크기 2^m words (== 2^m+2 bytes)

이면

byte offset : m+2 bits

Index : n bits

Tag : 32 - (n + m + 2) bits

Total : 2^n(2^m+5 + Tag + 1) bits

> 1은 vaild bit (값이 있는지 확인하는 bit)

 

 

# Mapping 방식

Direct mapped : 위치만 알면 바로 찾을 수 있음

Set associative : 해당 셋의 블록을 전부 탐색 해야함

Fully associative : 배치가 자유롭지만 찾을 때 전부 탐색해야함

 

 공통 :

-  하위 bit 부터 Set 값이 됨, 상위 bit는 Tag 값 ( Set 값 만큼 value를 나눔)

-  LRU (Least Resently Used) 방식으로 최근에 쓰지 않은 데이터부터 자리 뺏음

 

# 주소 전달

- 물리주소가 가상주소보다 작기 때문에 bit 수가 보통 작음

- Page offset 은 변하지 않음

 

#TLF (Transition Lookaside Buffer)

- 빠른 사용을 위해 TLB를 둚

- TLB에 존재하지 않으면 PageTable 에서 찾고 거기도 없으면 Storage에서 탐색함

- TLB에 Hit 한다는 것이 페이지가 메인메모리에 있다는 뜻은 아님

'공부 > CS' 카테고리의 다른 글

데이터 의존성  (0) 2025.03.01
C++ 과 C# 의 차이  (0) 2024.05.22
파이프라인 데이터페스  (0) 2023.06.28
MIPS 데이터 패스 구동 방식  (0) 2023.06.28
MIPS 주소 방식  (0) 2023.06.28

+ Recent posts

let textNodes = document.querySelectorAll("div.tt_article_useless_p_margin.contents_style > *:not(figure):not(pre)"); textNodes.forEach(function(a) { a.innerHTML = a.innerHTML.replace(/`(.*?)`/g, '$1'); });