본문 바로가기

대학 수업

Write-Through vs. Write-Back Cache - 임베디드 컴퓨터 구조

반응형

캐시 별로,

Write-Through Cache

  • Cache에 데이터를 업데이트 하면 Main Memory(원본)과 값이 달라진다.
  • 이때 이를 해결하기 위해 캐시 업데이트 시 메인 메모리를 같이 업데이트 하는 정책이다.
  • 프로세서가 메인 메모리 업데이트를 기다린다면 매우 비효율적이다
    • e.g. base CPI = 1, 10% inst = store, write to mem takes 100 cycles
    • CPI = 1 + 0.1 * 100 = 11 cycles
  • 이를 방지하기 위해 Write Buffer 사용
    • Write Buffer에 Memory에 업데이트 되어야 할 Data를 저장
    • CPU는 다음 명령어 실행하러 가고 DMA로 업데이트
    • store -> cache hit -> Write Buffer full 시에만 Stall이 발생한다.
  • CPU와 메모리의 Speed Mismatch를 해소하는 역할

Write-Back Cache

  • Write-Through Cache의 단점을 보완할 목적으로 만들어짐
  • Cache에 데이터를 업데이트 하면 나중에 Main Memory에 업데이트 하기 위해 일단 표시한다.
  • 표시를 위해 Cache Block마다 새로운 Status Bit(= Dirty Bit)을 설정한다.
  • Cache Block이 Replace 될 때 해당 Cache가 가리키는 Main Memory에 값을 업데이트 한다.
    • 다른 Tag를 가진 Data가 Cache Block에 할당될 때
  • 데이터를 업데이트한 뒤 새로운 데이터를 저장하여야 하는데, 업데이트 속도가 느림
  • 업데이트 될 데이터를 일단 Write Buffer로 옮기고 새로운 데이터를 받는다.
  • Write-Through보다 Write Buffer의 부담이 덜할 듯

Write Allocation

  • Write Miss가 발생했을 때의 정책
  • Write-Through일 때 Cache Miss
    1. Allocate on miss: Cache로 가져와서 store 후 Write-Through (Fetch the Block)
    2. Write Around: 메모리에 직접 쓰기 (Don't Fetch the Block)
  • Write-Back일 때 Cache Miss
    1. Fetch the Block

Main Memory Supporting Caches

  • DRAM을 메인 메모리로 사용한다
    • DRAM에서 한 번에 읽어올 수 있는 width가 고정되어 있다. (1 word)
    • fixed-width clocked bus로 연결되어 있다
      • bus clock은 CPU clock보다 느림
  • 예시
    • 1 bus cycle for addr transfer
    • 15 bus cycle per DRAM Access
    • 1 bus cycle per data transfer
  • 4-word block 데이터 받아오기, 1-word-wide DRAM
    • 연속된 데이터이니 주소는 1번만 전송
    • Mem Access와 Transfer는 4번씩 발생
    • miss penalty = 1 + 4*15 + 4x1 = 65 bus cycle
    • bandwidth = 16 bytes / 65 cycles = 0.25 B/cycle
  • 4-word-wide DRAM이라면
    • miss penalty = 1 + 15 + 1 = 17 bus cycles
    • bandwidth = 16 / 17 = 0.94 B/Cycle
    • 하드웨어 구성이 비싸서 4-bank interleaved 방식을 주로 사용
  • 4-bank interleaved DRAM
    • 1 + 15 + 4 * 1 = 20 bus cycles
    • 0.8 B/cycle Bandwidth

반응형