5. Large and Fast: Exploiting Memory Hierarchy

2024. 6. 13. 11:30Computer Engineering/컴퓨터구조

 

1. Principle of Locality (지역성)

프로그램은 주소 공간 내의 비교적 작은 부분만 사용한다.

  ① Temporal Locality (시간적 지역성)

    : 한번 사용했던 것은 가까운 시간내에 다시 사용될 가능성이 높다. ex) 반복문

  ② Spatial Locality (공간적 지역성)

    : 한번 사용했던 근처의 다른 항목들이 사용될 가능성이 높다. ex) 배열

- Locality 장점 : 메모리 계층 구성,

                          disk(CPU)에 모두 저장, 

                          DRAM - Main memory,

                          SRAM - Cache Memory

 

2. Memory Hierarchy Levels (메모리 계층 구조)

용어 정리

- Block( = Line) : 메모리 계층간 데이터전송의 최소 단위

- Hit(적중): 프로세서가 데이터를 upper level에 요청했을 때 해당 데이터가 존재한다면 이를 hit 했다고 부른다.

  Hit ratio (적중률): hit / accesses

  Hit time : upper level까지 접근하는데 걸리는 시간

- Miss(실패): 프로세서가 데이터를 upper level에 요청했을 때 해당 데이터가 존재하지 않는다면 miss했다고 부른다.

                      → 이럴경우 lower level에 접근해 요청한 정보를 추출한다.               

  Miss ratio (실패율) : 1 - hit ratio = misses / accesses

  Miss panalty: miss가 일어났을 때 하위단계에서 상위단계로 정보를 올리고 프로세서까지 전달하는데 걸리는 시간

 

Memory Technology (메모리 기술)

 

- SRAM(Static RAM): Cache, 빠르지만 비싸다.

- DRAM(Dynamic RAM) : Main memory, 느리지만 싸다.

- Flash Storage: 비휘발성

- Magnaetic Disk :  Hard disk, 가장 느리지만, 가장 싸고 가장 크다.

 

SRAM의 접근시간과 Disk의 가격과 용량이 가장 이상적이다.

  

  + DRAM기술: capacitor에 저장, 주기적으로 refresh된다, read/write

                         용량이 급격히 커지고 비용도 싸진다.

                   「성능지표: row buffer(병렬적으로), Synchronous DRAM(연속적), DRAM banking(동시에) → bandwidth향상

  + 메모리 Bandwidth 향상 

 

a(DRAM): miss penalty=1 + 4*15 + 4*1 = 65 bus cycles

                 bandwidth=16bytes / 65 cycles= 0.25 bytes/cycles

b: miss penalty = 1+15 + 1 = 17 bus cycles

    bandwiddth =  16bytes/17cycles = 0.94 bytes/cycles

c: miss penalty = 1 + 15 + 4*1 = 20 bus cycles

    bandwidth = 16bytes/20cycles = 0.8 bytes/cycles

 

실제로는 c를 주로 사용한다.

 

 

 

 

3. Cache Memory (캐시메모리)

해결해야할 것

  ① 데이터가 cache내에 있는지 없는지 확인하는 법

  ② 만약 내부에 데이터가 있다면 어떻게 찾는가?

 

Direct Mapped Cache

각 메모리의 위치가 cache내의 정확히 한 곳에만 사상되는 캐시구조를 직접사상(Direct Mapped)라고 부른다.

- Cache에서 위치를 할당하는 가장 간단한 방법은 해당 word의 메모리 주소를 사용하는 것이다. 

 

Tag and Valid Bits

각 캐시블록은 여러 주소의 메모리 내용을 가지고 있을 수 있다. 

이때 Tag를 주소의 상위부분 비트로 구성하면서 구분해준다.

 

캐시블록이 유효한 정보를 가지고 있는지 알아내기 위해서 Valid bit를 추가한다.

Valid bit = 1이면 유효한 정보를 가지고 있는 것이고 0이라면 유효한 데이터가 없는 것이다.

 

Cache Access 예제

- 8-blocks, 1 word/block, direct mapped

 

이미 있으면 hit, 없으면 miss 후 넣어준다!

 

 

 

 

 

 

새로운 정보로 바뀐다!

 

Address Subdivision(주소분할)

(메모리)주소 = (캐시) 블록주소 [ = Tag + Cache 블록 ] + (캐시) offset

 

ex) 64 blocks, 16 bytes/block (= 4word), 메모리 주소 1200 사상?

- 블록 주소 = 메모리주소 / 블록크기(바이트) = 1200/16 = 75

- 캐시 블록( 블록번호) = 블록주소 modulo 블록수 =  75 modulo 64 = 11

 

Block Size Consideration

블록↑ ~ 공간적 지역성 덕분에 실패율(miss rate)↓ ~ miss penalty ↑ 

- 해결책: early restart, critical word fast 

 

4. Cache Miss와 Write처리


Cache Miss

1. CPU 파이프라인 stall(지연) 발생 

2. Fetch block from the next level(low level) of hierarchy

3. instruction cache miss: Restart instructuion fetch 

    data cache miss: Complete data acccess

 

Cache Hit

- Write-Through(즉시쓰기) 

  • hit가 일어났다면 process는 cache에 있는 block 업데이트 가능하다. 하지만 이때 cache와 memory 사이에 불일치가 발생한다. 이것을 해결하는 방법이 write-through이다. [cache랑 memory 업데이트]
  • 하지만 시간이 오래걸려 좋은 방법이 아니다. 그렇기 때문에 write buffer을 이용한다. write buffer가 full 되었을 때만 stall 해준다. 

- Write-Back(나중쓰기)

  • 또 다른 대안으로 Cache만 업데이트하는 write-back이 있다.
  • Cache 업데이트 하면 memory에 업데이트 표시하기 위해 dirty block이용한다.
  • dirty block 바뀌면 memory에 다시 작성한다.

5. Measuring Cache Performance (캐시성능측정)

캐시성능측정

Memory stall cycles = Memory access/program * Miss rate * Miss penalty

 

평균메모리접근시간(Average Access Time)

AMAT = Hit time + Miss rate * Miss penalty

 

Perforamce Summary(성능)

- CPU 성능↑ ~ Miss penalty 중요도 ↑

- base CPI ↑ ~ stall시간 ↓

- clock rate ↑ ~ stall CPU cycle ↑

 

6. Assosciative Cache

Assosiative Cache는 캐시 실패율 miss rate을 줄이는 방법이다.

① fully assosiative : block이 어느곳에나 들어갈 수 있다. 

② set assosiative: directed mapped와 fully associative의 중간에 있는 방식, n개의 블록

 

Assosiativity 커지면 Miss rate 줄어든다.

 

Replacement Policy (교체정책)

- Direct mapped: 무조건 교체

- Set Associative: 교체할 블록 선택

  • LRU(Least-recently used) : 가장 오래 사용 안된 것으로
  • Random: 무작위 교체

- Fully Associative: 모든 블록이 교체 후보

 

7. Multilevel Cache

Multilevel cache는 miss penalty를 감소시켜 성능을 높이는 방법이다. 

- Primary(L1) Cache: CPU, 작지만 빠르다.

- L2 Cache: 크지만 느리다.

- Main memory

- L3 Cache

 

Ex.

- Primary Cache:  CPI = base CPI + Miss rate/instruction * Miss penalty

- add L2 Cache: 1차 penalty, 2차 penalty 구한 후 CPI= base CPI + 1차 캐시지연 + 2차 캐시 지연

 

Multilevel Cache 고려사항

- Primary cache: hit time 최소화

- L2 cache: miss rate 최소화

 

8. Dependability

failure를 일으키는 일부 요인 중 하나가 fault

Dependability Measures

  1. Reliability : MTTF(Mean Time To Failure) -> 평균적으로 오류가 언제마다 한 번씩 발생하는지
  2. Service interruption : MTTR(Mean Time To Repair) -> 수리에 걸리는 시간
  3. MTBF(Mean Time Between Failures) = MTTF + MTTR -> 오류들 사이의 평균 시간

-> 서비스가 제대로 수행될 확률 : Availability = MTTF / (MTTF + MTTR)

-> Availability를 향상하려면?

  • MTTF를 증가시킨다 : fault avoidance, fault tolerance, fault forecase
  • MTTR을 감소시킨다 : 진단과 수리를 위한 향상된 도구와 프로세서 사용

The Hamming SEC Code

- Hamming distance: 비트를 기준으로 몇 개의 비트 차이가 나는가

                                  ex) 0111(7) vs 1000(8) 4개의 비트차이! distance=4

                                  패리티비트

 

- Encoding SEC: 어디에 에러가 났는지 positioning

                            ex) p2와 p8에 오류! d6!

 

- Decoding SEC: 패리티비트 값은 어떤 비트가 오류인지 알려준다. 

                            ex) parity bit = 1010 -> 10에서 p8 p2오류

 

- SED/DEC Code

 

9. Virtual Machines

 

virtual memory(가상메모리)

- 2차 저장장치(disk)의 캐시로 메인메모리를 사용하는 기술

- 여러 프로그램이 메인메모리를 공유한다.

- 가상메모리에서 block은 page, miss는 fault이다.

- CPU와 OS가 가상주소(virtual address)를 물리적주소(physical address)로 변환시킨다.

 

Address Translation

가상 page가 메인메모리에 없을 때는 실제주소인 physical address로 사상되지 않고 disk로 넘어간다. 

 

Replacement(교체)

page fault 발생했을 때 교체할 페이지 선택해야 한다.

- LRU(least recently used) 교체방법 사용한다 -> refernece bit = 0 사용

- 가상메모리는 write through보다는 write-back 사용

- 페이지에 쓰기를 한적이 있는지를 표시하기 위해 page table에 dirty bit 추가(갱신비트)

 

TLB

페이지 테이블에 접근하는 것을 피하기 위해 최근에 사용된 주소 사상을 보관하고 있는 캐시.

캐시이기 때문에 Tag 필드가 있다.

접근하려는 페이지와 일치하는 엔트리가 TLB에 없을 경우, page table을 조사해야 한다.

page table은 페이지의 실제페이지번호를 제공하거나 페이지가 디스크(page fault)에 있음을 표시한다.

 

- TLB miss 

  • TLB miss발생 시 이 miss가 page fault인지 단순한 TLB miss인지 알아야 한다. 
  • 페이지가 메인메모리에 존재: 단순 TLB miss
  • 페이지가 메인메모리에 존재 X: page fault -> Exception(예외) 사용해 처리

'Computer Engineering > 컴퓨터구조' 카테고리의 다른 글

4. The Processor - Pipelining  (0) 2024.06.13