반응형
DRAM에 대한 자세한 강의는 대학원 강의 때.. 가지 않습니다
DRAM 구성
DRAM은 2D Array로 구성되어 있고, Address를 받으면 해당 row를 읽어낸다. 읽어낸 데이터는 DRAM의 Row Buffer로 저장되며 이는 캐시의 역할을 수행한다. Row 단위로 읽힌 데이터는 Row Buffer에서 필요한만큼 잘려 CPU로 이동한다.
DDR, QDR
한 Clock Cycle은 두 개의 Edge(Rising Edge, Falling Edge)로 구성되며, 최초의 DRAM은 한 Clock Cycle에 한 번의 데이터를 전송했으나 최근의 DDR(Double Data Rate) DRAM은 Rising과 Falling Edge에 각각 데이터를 전송하고, QDR(Quad Data Rate) DRAM은 DDR input과 output을 더욱더 쪼갠 형태이다.
Burst Mode
Burst Mode는 연속되는 word를 row에서 가져올 때 지연시간이 줄어드는 기능이다.
DRAM의 처리 속도
DRAM의 처리 속도는 CPU의 처리 속도 증가량에 비해 더딘 수준이다. 따라서 DRAM과 CPU의 처리 속도로 인한 stall을 보완하기 위해 캐시 기법이 발달하였다.
캐시 성능 측정하기
CPU Time의 구성요소
- Program Execution Cycles
- Cache Hit Time을 포함한다
- Memory Stall Cycles
- 주로 Cache Miss로 인해 발생한다
- Program Execution Cycles
Memory Stall Cycles는 다음 공식을 따른다
- Memory Stall Cycles
- = 프로그램 당 메모리 접근 횟수 * Miss Rate * Miss Penalty
- = 프로그램 당 명령어 수 * 명령어 당 Miss 수 * Miss Penalty
예시
- I-Cache Miss Rate = 2%
- D-Cache Miss Rate = 4%
- Miss Penalty = 100 Cycles
- Base CPI (Ideal Cache) = 2
- Load & Store = 36% of instructions
Miss Cycles Per Instruction
- I-Cache Miss Cycles: I-Cache Miss Rate * Miss Penalty = 0.02 * 100 = 2
- D-Cache Miss Cycles: (명령어가 Load & Store일 확률) * D-Cache Miss Rate * Miss Penalty = 0.36 * 0.04 * 100 = 1.44
- Actual CPI = 2 + 2 + 1.44 = 5.44
- Ideal CPU가 2.77배 더 빠름
Associative Caches
- Fully Associative
- 주어진 블록이 캐시 어디든 위치할 수 있음
- 선형적으로 탐색하면 그만큼 탐색 시간이 길어진다
- 때문에 병렬적으로 탐색하는 회로 필요
- Comparator가 각 Entry마다 필요 (Expensive)
- n-way Set Associative
- 캐시를 n개의 entry씩 Set으로 지정하여 나눈다
- Block Number % (#Sets in Cache)로 블록이 저장될 Set 지정
- 마찬가지로 n개의 Entry 병렬 탐색하는 회로 필요
- n개의 Comparator가 필요 (Less Expensive)
- How Much Associativity???
- Miss Rate는 줄어들 지만 일정 수준 넘어가면 정체됨
- 일반적으로 2-way, 4-way 많이 사용한다
Direct Mapped와 Set-Associative Cache 하드웨어 비교
- Direct Mapped Cache의 경우 하위 2비트를 제외한 뒤, 10비트가 Index로, 20비트가 Tag로 사용된다.
- 4-way Set Associative Cache의 경우 하위 2비트를 제외한 뒤, 8비트가 Index로, 나머지 22비트가 Tag로 사용된다.
- Index가 줄어든 이유는 하나의 Set의 Entry가 2^10 / 4 = 2^8개로 줄어들었기 때문이다.
- 4개의 Comparator에서 나온 결과를 OR 게이트를 통해 Hit 여부를 찾아낸다.
- 비슷한 논리로 4-to-1 MUX를 이용하여 데이터를 걸러낼 수 있다.
- 하드웨어가 추가되기 때문에 일반적으로 Cache Access Time이 느려진다.
Replacement Policy
- Direct Mapped: No Choice
- Set Associative
- Non-Valid Entry가 있으면 거기에 새로운 데이터 가져온다
- 다들 Valid하면 특정한 정책에 따라 골라낸다
- LRU(Least-Recently Used): 가장 오랜 시간 사용되지 않은 Entry를 대체한다.
- 2-way, 4-way에선 할만 하나, 그 이상은 제어가 힘들다
- Random: Associativity가 높아질수록 LRU와 거의 성능이 비슷함
- 요즘은 LRU보다 복잡한 알고리즘을 사용한다 (CPU의 성능이 우선, 복잡도는 부수적인 문제)
Multilevel Caches
- Primary Cache는 CPU에 붙어있음
- 작지만 빠르다
- Level-2 Cache는 Primary Cache가 Miss가 날 경우 작동
- 좀 더 크지만 느리고 Main Memory보단 빠르다
- Main Memory는 L-2 Cache Miss 시 작동
- 시스템 규모에 따라 L-3 Cache 등 추가
- Miss Rate를 엄청 줄일 수 있다
- Given
- CPU base CPI = 1
- Clock Rate = 4GHz
- Miss Rate / Instruction = 2%
- Main Memory Access Time = 100ns
- Only Primary Cache
- Miss Penalty = 100ns / 0.25ns = 400 cycles
- Effective CPI = 1 + 0.02 x 400 = 9 cycles
- L-2 Cache Spec
- Access Time = 5ns
- Global Miss Rate to Main Memory = 0.5%
- With L-2 Cache
- L-1 Miss Penalty = 5ns / 0.25ns = 20 cycles
- L-2 Miss Penalty = 400 cycles
- Effective CPI = 1 + 0.02 x 20 + 0.005 x 400 = 3.4 cycles
- Performance Ratio = 9 / 3.4 = L-1 Cache만 있을 때보다 2.6배 빠르다
Cache가 Advanced CPU와 Interaction하는 방법
- Out-of-Order CPU는 Cache Miss 동안 명령어 실행 가능
- load/store unit에서 Pending
- 의존성이 있는 명령어는 Reservation Station에서 기다린다
- 의존성 없으면 계속 실행한다
- Miss의 영향은 프로그램의 데이터 플로우에 따라 다름
- 분석이 힘들다
- 때문에 시스템 시뮬레이션을 이용한다
반응형
'대학 수업' 카테고리의 다른 글
Scratchpad Memory, Cache Locking - 임베디드 컴퓨터 구조 (0) | 2020.12.13 |
---|---|
Virtual Memory, TLB, Cache Interacton - 임베디드 컴퓨터 구조 (1) | 2020.12.13 |
Write-Through vs. Write-Back Cache - 임베디드 컴퓨터 구조 (0) | 2020.12.12 |
Cache Architecture - 임베디드 컴퓨터 구조 (0) | 2020.12.11 |
Speculative Tomasulo Algorithm - 임베디드 컴퓨터 구조 (0) | 2020.12.11 |