반도체 소프트웨어

요약 4. 배리어(Barrier) 본문

CPU Architecture/ARM Memory Model & Barrier

요약 4. 배리어(Barrier)

반도체 소프트웨어 엔지니어 2024. 1. 26. 11:11
  1. 메모리 리오더링의 사이트 이펙트(노멀 메모리에서 ARM 코어 최적화)에 의한 소프트웨어 버그를 예방하기 위한 기법
  2. ARM 아키텍처는 명령어 실행 순서를 보장하는 배리어 제공
    • DMB(data memory barrier): 메모리 엑세스 순서 보장
      • 메모리 머지(연속 메모리 접근), 리오더링들에 의해 명령어 순서가 바뀌는 것을 방지하기 위해 사용
      • 예를 들면 CPSR셋팅 등으로 실행 흐름이 변경될수있는 명령어라면 실행 순서가 바뀌면 안되며 이럴때는 배리어 사용해줘야함
      • STR, LDR에만 적용 가능. 즉 메모리 엑세스 명령어에만 적용됨
      • DMB <qual> (qual: 배리어 명령어 실행 범위 제한)
    • DSB(data synchronizatinon barrier): 메모리 리오더링과 명령어 리오더링을 함께 방지하는 기능(DMB + ISB)
      • DSB명령어 실행하면 아래 작업이 완료될때까지 추가 명령어 실행을 멈추고 스톨하기에 시스템 성능에 영향을 줄수있어 남발하면 안됨
        1. instruction 및 data 캐시 조작
        2. branch predictor 캐시 flush
        3. 지연된 load/store 명령의 처리
        4. TLB 캐시 조작 완료
        5. DMB명령이 하는일
    • ISB(instruction synchronization barrier): 명령어 실행 순서 보장
      • 파이프라인: 여러 개의 명령어를 병렬로 읽어서 처리
        1. 명령어 순서를 바꿔 실행하면 프로그래머가 입력한 코드가 의도대로 실행되지 않음
        2. 즉 여러 어셈블리명령어가 이미 파이프라인에 페치되어서 동작중인것
      • 명령어 실행 순서를 보장하는 기능을 제공하는 배리어
      • 시스템 레지스터 제어하는 명령어(MRS, MSR)사용이후에는 ISB배리어를 반드시 실행해줘야함
      • ISB명령어가 실행되면 파이프라인에 미리 페치된 명령어들을 FLUSH(삭제하고) ISB이전 명령어 다 실행된 이후에 다시 그 이후 명령어들을 페치해서 실행하기 시작함

 

출처: 인프런, "Arm 아키텍처: 메모리 모델과 배리어", https://inf.run/5b8vH

 

'CPU Architecture > ARM Memory Model & Barrier' 카테고리의 다른 글

요약 5. 배리어 고급  (0) 2024.01.26
요약 3. 노멀 메모리  (1) 2024.01.26
요약 2. MMIO(Memory Mapped I/O)  (1) 2024.01.26
요약 1. 메모리 모델 개요  (0) 2024.01.26