Cache – Coherent

Cache Coherency

  • Cache Coherency가 이루어지려면 모든 프로세스 코어와 버스 마스터간에 데이터를 access할 때 캐시에 있는 데이터가 다른 코어나 버스에게도 같은 상태를 보여줄 수 있어야 한다.
  • 멀티 코어 또는 멀티 프로세스에서 Cache Coherent 동작을 하지 않을 때
    • 각기 동작하는 스레드가 동시에 같은 share data를 access시 데이터 불일치 가능
    • 각기 동작하는 스레드가 인접 메모리(같은 캐시 라인에 속한)를 access시 데이터 불일치 가능
  • coherency 관리 방법
    • 캐시 disable: 실제로는 성능 이유로 사용하지 않음
    • S/W 관리: 보통 디바이스 드라이버에서 캐시 clean & invalidate를 사용하여 필요시 수행(DMA 등)
    • H/W 관리: 가장 완벽한 솔루션(클러스터등에서는 조금 더 복잡하다)

-> 대부분의 ARM SMP 시스템에서는 코어끼리 통신은 H/W 관리를 사용하며, 외부 장치와의 연동에 사용하는 DMA등은 H/W가 지원하는 Cache Coherent 용 포트를 사용할 수도 있지만 대부분의 경우 S/W 관리 방식을 사용한다.

Coherency mechanisms

  • Directory-based
  • Snoping
  • Snarfing

Coherency 프로토콜

cache7

MOESI protocol

cache9

cache10

ARM ACE protocol vs MOESI

cache8

ARM H/W Cache Coherency 메카니즘

  • SCU(Snoop Control Unit):
    • AMBA AXI 3에서 소개
    • ARM 각 코어의 L1-Data cache 끼리 coherency 가능
    • ARM에서 L1-Instruction cache는 s/w 관리가 필요함 (self-modifing-code)
    • 1개의 클러스터 내 inner shareable 영역만 가능
    • MSI 프로토콜 기반
    • ACP(Accelerator Coherency Port)를 사용한 H/W 주변장치도 cache coherent 동작 사용 가능
    • ACP를 사용하지 않는 디바이스들은 cache coherent를 위해 s/w 관리가 필요함(DMA).
  • AMBA 4 with ACE(AXI Coherency Extensions)
    • AMBA AXI 4에서 소개
    • 2개 이상의 클러스터에서도 cache coherent 가능
    • MOESI 프로토콜 기반
    • 멀티 코어 뿐 아니라 ACE Lite를 사용한 디바이스의 cache coherent 동작 사용 가능
    • SCU 버스를 사용하지 않고 AMBA 4 버스를 확장시켜 5개의 AXI 채널 + 3개의 ACE 전용 채널을 사용
  • AMBA 5 with CHI
    • AMBA AXI 5에서 소개
    • 대역폭이 큰 초고속 버스를 사용
    • 그 외 AMBA 4 with ACE와 유사

멀티 클러스터에서의 ACE

cache11

 

참고

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.