카테고리 없음

week12

용학사 2025. 6. 7. 19:07

SRAM:700ps~1ns

값은 한 쌍의 플립플롭에 저장

매우 빠르지만 DRAM보다 더 많은 공간을 차지(4~6 트랜지스터)

 

DRAM: 60~100ns

값은 축전기에 전하로 저장(갱신해야 함)

매우 크고 SRAM보다 느림(5배에서 10배 정도)

 

Disk access: ~1million ns

 

Locality

항목이 참조되는 경우

시간적 지연성: 곧 다시 참조될 경향이 있다.

공간 지역성: 가까운 항목은 곧 참조될 경향이 있다.

hit: 찾으려는 데이터가 상위 레벨에 있는경우

miss:요청된 데이터가 상위 레벨에 없는 경우

 

Direct Mapped Cache

맵핑: 주소는 캐시의 블록 수에 대해 모듈로 연산

뒤에 두비트가 Data의 주소를 뜻하므로 Data는 4개로 나눠지는거임

3.3.2 이렇게 3부분으로 나눠지고

앞에 3비트는 tag

중간 3비트는 index

뒤에 2비트는 Data의 4바이트 블록을 의미하고 바이트 오프셋을 위해 하위 2비트를 제거한다. (바이트 주소 지정 시스템에만 관련)

값이 들어오면 valid를 1로 변경

만약 index가 같은 데이터가 들어온다면 태그를 확인하고 태그가 다르면 비워내고 새로 들어온 값을 다시 적는다.

 

Write Through는 메모리와 캐시에 모두 쓰는 방식

Write Back은 캐시블록에만 기록한 다음 블록이 교체될 때 메모리에 쓰는 방식

메모리를 캐시 블록에만 일단 쓰고 기다림

새로운 입력이 들어왔는데 보면 index가 111로 겹침 하지만

이것이 메모리에 저장되어있는지 알 수 없음 ->Dirty bit를 하나 추가

 

DirtyBit: Write Back 방식을 의미하며 캐시에 있는 데이터가 메모리에 작성되어 있는지 알려줌

 

Read Hits

CPU가 요청한 주소가 캐시에 이미 있고 유효하다

-> 캐시에서 즉시 데이터 반환

 

Read Misses

CPU가 요청한  데이터가 캐시에 없을 때

->

  • CPU를 잠시 정지(stall)
  • 메모리(또는 상위 계층)에서 해당 블록(block) 전체를 읽어옴
  • 읽어온 블록을 캐시에 저장(deliver to cache)
  • 캐시에서 요청한 워드를 추출하여 CPU에 전달
  • CPU 재시작(restart)

“메모리를 lower 계층에서 upper(캐시) 계층으로 올려 와야 하므로 지연(latency)이 발생한다.”

 

Write Hits

CPU가 쓰려는 주소가 캐시에 있을 때, 두 가지 정책 중 하나늘 선택

 

Write-Back

-버스 band-width를 더 효율적으로 사용

-하위 메모리 접근이 적어 전력 절약

-멀티프로세서와 임베디드 시스템에서 선호

 

 

 

 

Write misses

Write No-Allocate(Write-Through)

->쓰기 미스가 발생해도 캐시에 로드하지 않고, 메모리에만 직접 씀

 

Write Allocat(Write-Back)

->쓰기 미스가 발생하면 블록 전체를 캐시에 먼저  불러온 후 쓰기 수행

2-way방식을 사용하면 미스 비율이 낮아짐 왜냐면

0-4-0-4-0-4이렇게 입력된다면

직접맵핑은 miss가 계속 뜨지만

2-way방식은 처음 0,4가 입력 될 때만 miss가 뜨고 두가지를 저장할 수 있으므로 hit가 뜨게 됨

 

가상 주소는 

Segment, Page, Word 이렇게 3부분으로 나뉨

 

Phsical Address는 

Block,Word 2부분으로 나뉨

 

64K=2^6 * 2^10 =2^16
1K워드 캐시 메모리 10비트 캐시 메모리

4워드의 블록크기 2비트가 필요함

 

1.

tag:6

index:

block:8

word:2

 

2.

valid:1

tag:6

data: