코드네임 :

🖥️ 컴퓨터구조 - Memory! 본문

⚙️Computer System/컴퓨터구조

🖥️ 컴퓨터구조 - Memory!

비엔 Vien 2024. 5. 23. 10:45

[ 지역성의 원칙 ]

 : 프로그램은 어떤 특정시간에는 주소공간 내의 비교적 작은 부분만을 접근함

 

시간적 지역성

- 한번 참조된 항목은 곧바로 다시 참조되는 경향

- loop 내의 명령어, loop 내에서 반복적으로 업데이트 되는 변수 

 

공간적 지역성

- 어떤 항목이 참조되면 그 근처에 있는 다른 항목들이 곧바로 참조될 가능성 높음

- 순차적 명령, 배열

 

 

ex)


 

메모리 계층구조 ⭐️

 


 

DRAM

- capacitor(콘덴서)에 전하로 저장

- DRAM의 메모리 셀 = 1개의 트랜지스터 + 1개의 capacitor

- capacitor는 비트값을 저장

- 주기적으로 refresh 필요

 

SRAM

- DRAM에 클럭 추가

- 메모리와 프로세서를 동기화하는 시간이 필요 X

 

DDR DRAM (Double Date Rate) : DDR4

- 대역폭 2배 향상


 

Flash Storage

비휘발성 반도체 저장장치

ㄴ 마모 균등화 필요

 

 

Disk Storage

비휘발성, 회전형 원판의 자기 저장장치

 


 

Disk Sectors and Disk Access

각 부문은 다음을 기록함

- Sector ID

- Data

- Error correcting code (ECC)

- Synchronizatoin fields and gaps

 


 

Cache Memory

작고 빠른 SRAM에 기반한 메모리로 hardware에 의한 관리

 

Cache vs Memory

 

 

 

Cache의 Hit 와 Miss


 

Memory Design 법


 

[ Placement ]

Direct Mapped Cache


[Idenctification]

 

Direct Mapped Cache : 읽기


Write

: 레지스터에서 쫓겨날 때 쓰임

 

Write Through (즉시쓰기)

 

Write Back (나중 쓰기)

 

 

쓰기 할당

 

 

성능!!

1. CPU 성능이 향상되면,

    Miss Penalty 의 중요성이 커짐 ( cache stall 영향이 큼 - 즉 cache miss )

2. CPI를 줄이면 (성능 향상)

     메모리 stall 시간이 전체 실행 시잔 중에서 더 큰 부분을 차지

3. Clock rate (clock 속도) 만 향상 시키면

     메모리 stall 시간이 전체 실행 시간 중에서 더 큰 부분을 차지

➡️ 시스템의 성능을 분석 시 cache의 영향 큼

 


 

[ Placement ] ⭐️

 

Fully associative (완전 연관)

- 블록이 캐시의 어느 곳에도 들어갈 수 있는 캐시 구조

- cache 내의 모든 엔트리 검색 필요 (캐시 엔트리)

- 모든 엔트리당 비교기 필요 (비용 증가)

 

n-way set associative (n-way 집합 연관)

- 각 블록이 들어갈 수 있는 장소의 개수가 n개로 정해져 있는 캐시 (적어도 2곳 이상)

   (2-way set associative, 4-way, 8-way, ...)

- 각 set은 n개의 엔트리 구성 캐시 엔트리

- Block 주소에서 set을 결정

- set 내의 모든 엔트리 검색 필요

- n개의 엔트리당 비교기 필요 (비용 덜 증가)

 

➡️ Fully 에서는 블록이 캐시 어느 곳에나 들어갈 수 있지만, n-way는 set내에서만 들어갈 수 있다

 


 


Associativity 를 증가시키면, miss rate는 감소됨

- 무작정 증가시킨다고, 계속 감소되는 거는 아님


 

[ Replacement Policy (교체할 블록의 선택) ]

1. Direct mapped의 경우

    - 그냥 교체 (내쫓김)

 

2. Set associative의 경우

    - non-valid가 딱 1개 있다면 그거 비워버리고 거기에다가 데이터 들어오는거 집어넣음

    - 근데! 여러개라면 셋의 entry 중에서 선택 

       - Least-recently used(IRU) : 가장 오랫동안 사용하지 않은 엔트리로 선정
       - Random 도 가능.. (높은 associative의 경우) 

 

 

 

 

Multilevel Caches