메모리 계층 구조
이전 글인 메모리 계층 구조에서 우리는 메모리 계층 구조, 용어 정리와 cache에 대해서 배울 수 있었습니다.
이번 글에서는 cache hit, miss 처리 방식과 miss가 왜 발생하고 어떻게 줄일 수 있는지 분석해 봅니다.
처리 방식 비교
Cache Hit 처리 방식 비교
정책 | 설명 |
---|---|
write-through | 1 사이클만에 완료 hit이면 just write miss면, 그 자리의 L1 cache의 정보를 다른 곳으로 복사해두고 그 자리에 새로운 정보를 write해야함 |
write-back | write시 2 사이클 필요 |
write-allocate vs. write-no-allocate 정리 글
Cache Miss 원인 분석
Issue | Description | Resolution |
---|---|---|
Compulsory | cold start 또는 first reference 때문에 처음에는 무조건 miss가 발생 | Block 사이즈를 키우면 compulsory를 줄일 수 있지만, miss penalty가 커질 수 있다. |
Capacity | 캐시에 프로그램의 모든 block이 들어가지 못하는 경우 | Cache 크기를 키우면 됨. 단, access time이 길어지고 비용 상승 |
Conflict | 같은 cache 위치로 향해 여러 개의 메모리가 위치하면 충돌이 발생할 수 있음 | Cache 크기를 키우고 associativity를 늘리면 됨. associativity: 한 군데로 치우치지 않게 배치 정책을 조절 → Hit time이 증가 |
Cache Miss 처리 방식 비교
Single word blocks 사례
Read miss 발생
I cache & D cache
-
pipeline을 전체 멈춤 (단, cache에 의한 것으로 hazard는 아님)
-
다음 메모리 계층에서 block을 fetch
-
cache에 삽입
- I cache: just insert
- D cache: write-back vs. write-through
write-back 캐시인 경우, dirty block을 교체할 가능성이 있는데 이런 경우 하위 계층 메모리에 쓰기 연산을 하고 교체를 해야 함
write-through 캐시라면, just insert
Write miss 발생
D cache only
Harvard 구조로, I cache와 D cache로 나누었기 때문에, cache를 동시에 접근할 수 있습니다.
Multi-word block 사례
Read miss 발생
I cache & D cache
Block 크기가 커질수록 Miss penalty가 증가
Early restart
- 요청된 block의 word가 돌아오는데로 프로세서가 명령어 수행
Critical word first
- 요청된 word는 메모리에서 캐시로 바로 전달되어서 프로세서가 실행
Non-blocking cache
- 어느 명령어에 필요한 정보가 캐시에서 miss가 발생하더라도, 다음 명령어가 무관한 명령어라면 다음 명령어를 그대로 실행시킴
Write miss 발생
D cache only
write-through + no-write allocate라면, just write
write-back + write allocate라면, 그 block 전체를 메모리로부터 fetch해야 함. 그리고 불러온 해당 block내의 필요한 word를 block으로 write
또는, 필요한 word만 메모리에서 가져오는 방법이 존재
→ block별 tag가 아닌, 각 word별 태그를 구성해야 함
- 1 word bus + 1 word block: 데이터를 받는 동안 정지해야 함
1 cycle to send address + 15 cycles to read DRAM + 1 cycle to return data
-
1 word bus + 4 word block
- Different DRAM
- Same DRAM
-
Interleaved memory
Bank가 4개라서 4개 동시에 시작하고, 메모리 bus가 작아서 받을 때는 순차적으로 받습니다.
Word interleaving: DRAM은 주기적으로 refreshing 해야 하는데, Word interleaving 기법으로 메모리 주소의 특정 부분에 대한 접근을 동시에 수행함으로써 성능을 최적화함
Memory bank
- memory device에 독립적으로 동작
- 다른 bank와는 상관없이 독립적으로 동시 접근이 가능