DSB, DMB 및 ISB는 지침의 순서 변경 방지를위한 방벽이라는 것을 알고 있습니다. 나는 또한 그들 각각에 대해 아주 좋은 설명을 많이 찾을 수 있지만, 그것들을 사용해야하는 경우를 상상하기는 꽤 어렵다.ARM의 장애물 (DSB, DMB, ISB)의 실제 사용 사례
또한 오픈 소스 코드에서 나는 때때로 그 장벽을 보지만 사용 이유를 이해하는 것은 어렵습니다. 다음과 같이 그냥 예를 들어, 리눅스 커널 3.7 tcp_rcv_synsent_state_process 기능에, 선이있다 : smp_mb()가 기본적으로 DMB
if (unlikely(po->origdev))
sll->sll_ifindex = orig_dev->ifindex;
else
sll->sll_ifindex = dev->ifindex;
smp_mb();
if (po->tp_version <= TPACKET_V2)
__packet_set_status(po, h.raw, status);
입니다. 실생활에 대한 몇 가지 예를 들려 주시겠습니까? 장벽에 대해 더 많이 이해하는 데 도움이됩니다.
이 질문은 최근 예제입니다. http://stackoverflow.com/q/15003405/1163019 – auselen
Cortex 프로그래머 가이드에는 장벽 (11.2) 섹션이 있습니다. http://infocenter.arm.com/help/topic/com.arm.doc.den0013c/index.html – auselen
매우 광범위한 질문이므로 아직 닫으려고합니다. – auselen