본문 바로가기

Programming/ARM

arm cache 의 속성과 셋팅 (2)



= 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고 나발이고 별로 신경 안 써도 되고요.

출처 : http://recipes.egloos.com/5170809

 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를 해줘도.. ㅋ.
 

출처 : http://recipes.egloos.com/5170809



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)