= Cache System =
Write strategy
1. Write- through
All write are passed to main memory immediately
Processor slow down to main memory speed during write
cpu ↔ cache ↔ Main memory
요 때, Write Through와 Write Back이라는 용어가 난무하는데요, Write Through라는 용어는 쓰루 패스와 마찬가지로 Memory에 뭔가를 쓸 때 그 값이 Cache위에 올라와 있는 값일 경우에 곤란하겠죠. Cache와 Memory값이 다르면 안되니까요. Write Through를 쓰게 되면 Cache와 Memory에 모두 Update를 같이 해버리는 거지요. 간편한 System이죠. Cache고 나발이고 별로 신경 안 써도 되고요.
2. Write- through with buffered write
Use a buffer to hold data to write back to main memory
Processor only slowed down to write buffer speed (which is fast)
Write buffer transfers data to main memory (slowly), processor continues its tasks
cpu ↔ cache ↔ buffer ↔ Main memory
3. Copy- back
Write operation updates the cache, but not main memory
Cache remember that it is different from main memory via a dirty bit
It is copied back to main memory only when the cache line is used by new data
그러면 Write Back이라는 건 뭘까요? Data를 쓸 때 Memory에는 안 쓰고요 Cache만 update하는 방법이에요.
오호라, Write Through보다 훨씬 빠르겠죠. 나중에 Cache에 있는 내용을 버리게 되는 경우에 update를 해주는 거죠. 하지만 단점이 있는 게, Write Back을 하면 속도가 빠른 대신에 Memory와 Cache가 서로 값이 다르게 된다는 단점이 있어요. 이런 걸 Inconsistency라고 부르는데요. 요렇게 되면 다른 건 그렇다 치더라도 Device를 Control할 때 Write back을 쓰게 되면 실제 Device에 값을 써야 되는데 Cache에만 써놓고, Device에 값을 안 넘기는 경우가 생겨요. 예를 들면 LCD 같은 데에다가 Data를 뿌리고 싶은데 LCD에다가 값을 썼더니 Cache에만 값을 쓰고 LCD에다가는 값을 안 넘겨줘서 LCD에 더 이상 그림이 안 뿌려지는 경우도 발생하는 거죠. LCD에 열라게 update를 해줘도.. ㅋ.
TLB(translation lookaside buffer)
TLB : 각각의 memory interface
일반적으로 single memory interface 시스템이면 single unified TLB
Instruction과 data interface가 분리되어 있으면 일반적으로 TLB도 분리
C(cacheable) 와 B(bufferable)bit
Cacheable : 이 속성은 페이지 내의 데이터가 캐시될 수 있음을 나타내 다음 이어지는 동작은 메인 메모리를 읽을 필요가 없게된다. 또 미리 명령을 읽을 수 있다. 캐시는 writeback 혹은 write-through로 만들어질 수 있다
(각 가상 페이지마다 개별적으로 설정할 수 있다)
Bufferable : 페이지 내의 데이터가 쓰기 buffer에 저장될 수 있음을 나타내고 이렇게하면 메인 메모리보다 빠른 동작을 하지만 write buffer는 정확한 쓰기 명령을 보장하지 않는다.
Access permission bit
Uncached memory access일 경우, physical address는 main memory access를 위한 address
Cached memory access일 경우
Cache miss일 경우 line fetch를 위한 address
Cache hit일 경우 physical address 무시
Domain
개별적 접근 권한 갖도록 정의된 메모리 영역
DACR(domain access control register)를 이용해 16개까지 설정 가능
cb(Cacheable, Bufferable)
ROM의 경우 Cacheable : 1, Bufferable : 0으로 세팅.
IO의 경우 Cacheable : 0, Bufferable : 0으로 세팅.
1,0(write-through)
1,1(write-back)
'Programming > ARM' 카테고리의 다른 글
L1, L2 cache 와 I cache, D cache 의 관계 (2) | 2010.05.04 |
---|---|
arm - SIGSERV나 SIGILL 이 발생했을때의 asm 동작 (0) | 2010.04.23 |
MMU 의 section register 의 의미 (0) | 2010.02.01 |
arm cache 의 속성과 셋팅 (1) (0) | 2010.02.01 |
ARM ASM commond 해석 (LDMDB, LDMEA, STMDB, STMFD) (0) | 2008.11.21 |